diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..460d346 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Ignore vendored/embedded librespot implementation +/librespot/ diff --git a/librespot/__init__.py b/librespot/__init__.py deleted file mode 100644 index 9503e25..0000000 --- a/librespot/__init__.py +++ /dev/null @@ -1,34 +0,0 @@ -from __future__ import annotations -from librespot.crypto import DiffieHellman -from librespot.proto.Keyexchange_pb2 import BuildInfo, Platform, Product, ProductFlags -from librespot.structure import Closeable, Runnable -import platform - - -class Version: - version_name = "0.0.9" - - @staticmethod - def platform() -> Platform: - if platform.system() == "Windows": - return Platform.PLATFORM_WIN32_X86 - if platform.system() == "Darwin": - return Platform.PLATFORM_OSX_X86 - return Platform.PLATFORM_LINUX_X86 - - @staticmethod - def version_string(): - return "librespot-python " + Version.version_name - - @staticmethod - def system_info_string(): - return Version.version_string() + \ - "; Python " + platform.python_version() + \ - "; " + platform.system() - - @staticmethod - def standard_build_info() -> BuildInfo: - return BuildInfo(product=Product.PRODUCT_CLIENT, - product_flags=[ProductFlags.PRODUCT_FLAG_NONE], - platform=Version.platform(), - version=117300517) diff --git a/librespot/__pycache__/__init__.cpython-312.pyc b/librespot/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 53b267c..0000000 Binary files a/librespot/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/librespot/__pycache__/cache.cpython-312.pyc b/librespot/__pycache__/cache.cpython-312.pyc deleted file mode 100644 index f070aab..0000000 Binary files a/librespot/__pycache__/cache.cpython-312.pyc and /dev/null differ diff --git a/librespot/__pycache__/core.cpython-312.pyc b/librespot/__pycache__/core.cpython-312.pyc deleted file mode 100644 index f0aa4ec..0000000 Binary files a/librespot/__pycache__/core.cpython-312.pyc and /dev/null differ diff --git a/librespot/__pycache__/crypto.cpython-312.pyc b/librespot/__pycache__/crypto.cpython-312.pyc deleted file mode 100644 index 0a688c6..0000000 Binary files a/librespot/__pycache__/crypto.cpython-312.pyc and /dev/null differ diff --git a/librespot/__pycache__/dealer.cpython-312.pyc b/librespot/__pycache__/dealer.cpython-312.pyc deleted file mode 100644 index 215e6b3..0000000 Binary files a/librespot/__pycache__/dealer.cpython-312.pyc and /dev/null differ diff --git a/librespot/__pycache__/mercury.cpython-312.pyc b/librespot/__pycache__/mercury.cpython-312.pyc deleted file mode 100644 index 6d2c977..0000000 Binary files a/librespot/__pycache__/mercury.cpython-312.pyc and /dev/null differ diff --git a/librespot/__pycache__/metadata.cpython-312.pyc b/librespot/__pycache__/metadata.cpython-312.pyc deleted file mode 100644 index 4af00bc..0000000 Binary files a/librespot/__pycache__/metadata.cpython-312.pyc and /dev/null differ diff --git a/librespot/__pycache__/structure.cpython-312.pyc b/librespot/__pycache__/structure.cpython-312.pyc deleted file mode 100644 index e27bfbe..0000000 Binary files a/librespot/__pycache__/structure.cpython-312.pyc and /dev/null differ diff --git a/librespot/__pycache__/util.cpython-312.pyc b/librespot/__pycache__/util.cpython-312.pyc deleted file mode 100644 index ac7e72a..0000000 Binary files a/librespot/__pycache__/util.cpython-312.pyc and /dev/null differ diff --git a/librespot/__pycache__/zeroconf.cpython-312.pyc b/librespot/__pycache__/zeroconf.cpython-312.pyc deleted file mode 100644 index ed6be33..0000000 Binary files a/librespot/__pycache__/zeroconf.cpython-312.pyc and /dev/null differ diff --git a/librespot/audio/__init__.py b/librespot/audio/__init__.py deleted file mode 100644 index c53346e..0000000 --- a/librespot/audio/__init__.py +++ /dev/null @@ -1,1217 +0,0 @@ -from __future__ import annotations -from librespot import util -from librespot.audio.decrypt import AesAudioDecrypt -from librespot.audio.format import SuperAudioFormat -from librespot.audio.storage import ChannelManager -from librespot.cache import CacheManager -from librespot.crypto import Packet -from librespot.metadata import EpisodeId, PlayableId, TrackId -from librespot.proto import Metadata_pb2 as Metadata, StorageResolve_pb2 as StorageResolve -from librespot.structure import GeneralAudioStream, AudioDecrypt, AudioQualityPicker, Closeable, FeederException, GeneralAudioStream, GeneralWritableStream, HaltListener, NoopAudioDecrypt, PacketsReceiver -from pathlib import Path -import concurrent.futures -import io -import logging -import math -import queue -import random -import struct -import threading -import time -import typing -import urllib.parse -import os -import json -import requests -import atexit -if typing.TYPE_CHECKING: - from librespot.core import Session - -""" -PATCH : SpotiClub Audio Key Fetching (v0.2.0) -Fetches the audio decryption key from the SpotiClub Audio Key API instead of Spotify directly. -This is a workaround for Spotify's tightened restrictions on Audio Key access (they allow only Premium Tier now). - -If you are using our fork, there is no reason for you to complete this section, as upon first run, Zotify will ask you for the logins and save them for future use. -But if needed somehow or by using this single patch file, there are 3 importants parameters to provide, and one is already filled in: -- server_url: The URL of the SpotiClub Audio Key API endpoint. You should not need to change this, except if a dev instructs you to do so. -- spoticlub_user : Your SpotiClub FTP username. You can get this by using our Padoru Asssistant once. -- spoticlub_password : Your SpotiClub FTP password, also obtainable via the Padoru Assistant. - -Using the fork's assistant is the recommended way to get register your credentials, as overwriting this file during the beta phase will need you to put them here over and over again. -""" -##### WRITE YOUR LOGINS DOWN HERE ##### -####################################### -server_url = "http://api.spoticlub.zip:4277/get_audio_key" -spoticlub_user = "anonymous" -spoticlub_password = "IfWeFeelLikeEnablingThis" -######################################## -##### END OF USER INPUT AREA ########### - -### SPOTICLUB CLIENT SERIAL TRACKING (DO NOT EDIT) ### -spoticlub_client_serial: typing.Optional[str] = None -spoticlub_loaded_logged: bool = False -######################################## - -### SPOTICLUB CLIENT SERIAL TRACKING (DO NOT EDIT) ### -spoticlub_client_serial: typing.Optional[str] = None -spoticlub_loaded_logged: bool = False - -def _spoticlub_notify_session_done() -> None: - global spoticlub_user, spoticlub_password, spoticlub_client_serial - try: - if not server_url or not spoticlub_user or not spoticlub_client_serial: - return - base_url = server_url.rsplit("/", 1)[0] - url = base_url + "/client_done" - payload = { - "user": spoticlub_user, - "password": spoticlub_password, - "client_serial": spoticlub_client_serial, - } - requests.post(url, json=payload, timeout=5) - except Exception: - AudioKeyManager.logger.debug( - "[SpotiClub API] Failed to notify server of session completion", - exc_info=True, - ) - - -atexit.register(_spoticlub_notify_session_done) -######################################## - -class LoadedStream(GeneralAudioStream): - def __init__(self, data: bytes): - super().__init__() - self._buffer = io.BytesIO(data) - - def read(self, n: int = -1) -> bytes: - return self._buffer.read(n) - - def close(self) -> None: - self._buffer.close() - -class AbsChunkedInputStream(io.BytesIO, HaltListener): - chunk_exception = None - closed = False - max_chunk_tries = 128 - preload_ahead = 3 - preload_chunk_retries = 2 - retries: typing.List[int] - retry_on_chunk_error: bool - wait_lock: threading.Condition = threading.Condition() - wait_for_chunk = -1 - __decoded_length = 0 - __mark = 0 - __pos = 0 - - def __init__(self, retry_on_chunk_error: bool): - super().__init__() - self.retries = [0] * self.chunks() - self.retry_on_chunk_error = retry_on_chunk_error - - def is_closed(self) -> bool: - return self.closed - - def buffer(self) -> typing.List[bytes]: - raise NotImplementedError() - - def size(self) -> int: - raise NotImplementedError() - - def close(self) -> None: - self.closed = True - with self.wait_lock: - self.wait_lock.notify_all() - - def available(self): - return self.size() - self.__pos - - def mark_supported(self) -> bool: - return True - - def mark(self, read_ahead_limit: int) -> None: - self.__mark = self.__pos - - def reset(self) -> None: - self.__pos = self.__mark - - def pos(self) -> int: - return self.__pos - - def seek(self, where: int, **kwargs) -> None: - if where < 0: - raise TypeError() - if self.closed: - raise IOError("Stream is closed!") - self.__pos = where - self.check_availability(int(self.__pos / (128 * 1024)), False, False) - - def skip(self, n: int) -> int: - if n < 0: - raise TypeError() - if self.closed: - raise IOError("Stream is closed!") - k = self.size() - self.__pos - if n < k: - k = n - self.__pos += k - chunk = int(self.__pos / (128 * 1024)) - self.check_availability(chunk, False, False) - return k - - def requested_chunks(self) -> typing.List[bool]: - raise NotImplementedError() - - def available_chunks(self) -> typing.List[bool]: - raise NotImplementedError() - - def chunks(self) -> int: - raise NotImplementedError() - - def request_chunk_from_stream(self, index: int) -> None: - raise NotImplementedError() - - def should_retry(self, chunk: int) -> bool: - if self.retries[chunk] < 1: - return True - if self.retries[chunk] > self.max_chunk_tries: - return False - return self.retry_on_chunk_error - - def check_availability(self, chunk: int, wait: bool, halted: bool) -> None: - if halted and not wait: - raise TypeError() - if not self.requested_chunks()[chunk]: - self.request_chunk_from_stream(chunk) - self.requested_chunks()[chunk] = True - for i in range(chunk + 1, - min(self.chunks() - 1, chunk + self.preload_ahead) + 1): - if (self.requested_chunks()[i] - and self.retries[i] < self.preload_chunk_retries): - self.request_chunk_from_stream(i) - self.requested_chunks()[chunk] = True - if wait: - if self.available_chunks()[chunk]: - return - retry = False - with self.wait_lock: - if not halted: - self.stream_read_halted(chunk, int(time.time() * 1000)) - self.chunk_exception = None - self.wait_for_chunk = chunk - self.wait_lock.wait_for(lambda: self.available_chunks()[chunk]) - if self.closed: - return - if self.chunk_exception is not None: - if self.should_retry(chunk): - retry = True - else: - raise AbsChunkedInputStream.ChunkException - if not retry: - self.stream_read_halted(chunk, int(time.time() * 1000)) - if retry: - time.sleep(math.log10(self.retries[chunk])) - self.check_availability(chunk, True, True) - - def read(self, __size: int = 0) -> bytes: - if self.closed: - raise IOError("Stream is closed!") - if __size <= 0: - if self.__pos == self.size(): - return b"" - buffer = io.BytesIO() - total_size = self.size() - chunk = int(self.__pos / (128 * 1024)) - chunk_off = int(self.__pos % (128 * 1024)) - chunk_total = int(math.ceil(total_size / (128 * 1024))) - self.check_availability(chunk, True, False) - buffer.write(self.buffer()[chunk][chunk_off:]) - chunk += 1 - if chunk != chunk_total: - while chunk <= chunk_total - 1: - self.check_availability(chunk, True, False) - buffer.write(self.buffer()[chunk]) - chunk += 1 - buffer.seek(0) - self.__pos += buffer.getbuffer().nbytes - return buffer.read() - buffer = io.BytesIO() - chunk = int(self.__pos / (128 * 1024)) - chunk_off = int(self.__pos % (128 * 1024)) - chunk_end = int(__size / (128 * 1024)) - chunk_end_off = int(__size % (128 * 1024)) - if chunk_end > self.size(): - chunk_end = int(self.size() / (128 * 1024)) - chunk_end_off = int(self.size() % (128 * 1024)) - self.check_availability(chunk, True, False) - if chunk_off + __size > len(self.buffer()[chunk]): - buffer.write(self.buffer()[chunk][chunk_off:]) - chunk += 1 - while chunk <= chunk_end: - self.check_availability(chunk, True, False) - if chunk == chunk_end: - buffer.write(self.buffer()[chunk][:chunk_end_off]) - else: - buffer.write(self.buffer()[chunk]) - chunk += 1 - else: - buffer.write(self.buffer()[chunk][chunk_off:chunk_off + __size]) - buffer.seek(0) - self.__pos += buffer.getbuffer().nbytes - return buffer.read() - - def notify_chunk_available(self, index: int) -> None: - self.available_chunks()[index] = True - self.__decoded_length += len(self.buffer()[index]) - with self.wait_lock: - if index == self.wait_for_chunk and not self.closed: - self.wait_for_chunk = -1 - self.wait_lock.notify_all() - - def notify_chunk_error(self, index: int, ex): - self.available_chunks()[index] = False - self.requested_chunks()[index] = False - self.retries[index] += 1 - with self.wait_lock: - if index == self.wait_for_chunk and not self.closed: - self.chunk_exception = ex - self.wait_for_chunk = -1 - self.wait_lock.notify_all() - - def decoded_length(self): - return self.__decoded_length - - class ChunkException(IOError): - - @staticmethod - def from_stream_error(stream_error: int): - return AbsChunkedInputStream \ - .ChunkException("Failed due to stream error, code: {}".format(stream_error)) - - -class AudioKeyManager(PacketsReceiver, Closeable): - audio_key_request_timeout = 20 - logger = logging.getLogger("Librespot:AudioKeyManager") - __callbacks: typing.Dict[int, Callback] = {} - __seq_holder = 0 - __seq_holder_lock = threading.Condition() - __session: Session - __zero_short = b"\x00\x00" - _spoticlub_current_country: typing.Optional[str] = None - - def __init__(self, session: Session): - self.__session = session - - def dispatch(self, packet: Packet) -> None: - payload = io.BytesIO(packet.payload) - seq = struct.unpack(">i", payload.read(4))[0] - callback = self.__callbacks.get(seq) - if callback is None: - self.logger.warning( - "Couldn't find callback for seq: {}".format(seq)) - return - if packet.is_cmd(Packet.Type.aes_key): - key = payload.read(16) - callback.key(key) - elif packet.is_cmd(Packet.Type.aes_key_error): - code = struct.unpack(">H", payload.read(2))[0] - callback.error(code) - else: - self.logger.warning( - "Couldn't handle packet, cmd: {}, length: {}".format( - packet.cmd, len(packet.payload))) - - def _is_premium_user(self) -> bool: - """Best-effort check whether the current Spotify account is Premium. - - We rely on Session user attributes populated from the AP product_info packet. - Historically, the attribute named "type" contains values like "premium", "free", - "open", etc. - """ - try: - raw = ( - self.__session.get_user_attribute("type") - or self.__session.get_user_attribute("product") - or self.__session.get_user_attribute("product_type") - or self.__session.get_user_attribute("subscription") - or self.__session.get_user_attribute("account_type") - or "" - ) - product = str(raw).strip().lower() - if not product: - return False - - if "premium" in product: - return True - - # Legacy/alt plan names occasionally seen. - return product in {"unlimited"} - except Exception: - return False - - def _get_spotify_audio_key(self, gid: bytes, file_id: bytes, retry: bool = True) -> bytes: - """Request the audio key directly from Spotify (Premium accounts).""" - tries = 0 - last_err: typing.Optional[Exception] = None - - while True: - tries += 1 - callback = AudioKeyManager.SyncCallback(self) - - with self.__seq_holder_lock: - AudioKeyManager.__seq_holder += 1 - seq = AudioKeyManager.__seq_holder - AudioKeyManager.__callbacks[seq] = callback - - try: - payload = struct.pack(">i", seq) + gid + file_id - self.__session.send(Packet.Type.request_key, payload) - - key = callback.wait_response() - if key is None: - raise RuntimeError("Audio key request failed") - return key - except Exception as exc: # noqa: BLE001 - last_err = exc - self.logger.warning("Spotify audio key request failed (try %d): %s", tries, exc) - if not retry or tries >= 3: - break - time.sleep(1) - finally: - try: - AudioKeyManager.__callbacks.pop(seq, None) - except Exception: - pass - - raise RuntimeError( - "Failed fetching Audio Key from Spotify for gid: {}, fileId: {} (last error: {})".format( - util.bytes_to_hex(gid), util.bytes_to_hex(file_id), last_err - ) - ) - - def get_audio_key(self, - gid: bytes, - file_id: bytes, - retry: bool = True) -> bytes: - # If the user is Premium, Spotify will return audio keys directly. - # In that case, do not use the SpotiClub API. - if self._is_premium_user(): - return self._get_spotify_audio_key(gid, file_id, retry=retry) - - global spoticlub_user, spoticlub_password, spoticlub_client_serial, spoticlub_loaded_logged - if not spoticlub_user or not spoticlub_password or spoticlub_user == "anonymous": - try: - # To verify : Do all forks look for the same path ? - cfg_path = Path.home() / "AppData\\Roaming\\Zotify\\spoticlub_credentials.json" - if cfg_path.is_file(): - print(f"\n[SpotiClub API] Loading credentials...") - with open(cfg_path, "r", encoding="utf-8") as f: - cfg = json.load(f) - spoticlub_user = cfg.get("spoticlub_user") - spoticlub_password = cfg.get("spoticlub_password") - else: - print(f"[SpotiClub API] Credentials file NOT found at: {cfg_path}. We will proceed with hardcoded credentials if any...\n") - except Exception as exc: - print(f"[SpotiClub API] Error while loading credentials file: {exc}\n") - - if not spoticlub_user or not spoticlub_password or not server_url: - cfg_path = Path.home() / "AppData\\Roaming\\Zotify\\spoticlub_credentials.json" - msg = ( - "Missing SpotiClub credentials: please set the appropriates values inside your spoticlub_credentials.json," - f"located in the Zotify config folder [{cfg_path}] (Or delete it and restart Zotify to be prompted for credentials)." - ) - print(f"[SpotiClub API][ERROR]\n{msg}") - raise SystemExit(1) - - if not spoticlub_loaded_logged: - spoticlub_loaded_logged = True - print(f"\n[SpotiClub API] Plugin Loaded! Welcome {spoticlub_user}\n") - - payload = { - "gid": util.bytes_to_hex(gid), - "file_id": util.bytes_to_hex(file_id), - "user": spoticlub_user, - "password": spoticlub_password, - } - if spoticlub_client_serial: - payload["client_serial"] = spoticlub_client_serial - - tries = 0 - last_err: typing.Optional[Exception] = None - - while True: - tries += 1 - audio_key_loader = None - try: - try: - from zotify.loader import Loader - from zotify.termoutput import PrintChannel - audio_key_loader = Loader(PrintChannel.PROGRESS_INFO, "Fetching audio key...").start() - except Exception: - audio_key_loader = None - - resp = requests.post(server_url, json=payload, timeout=AudioKeyManager.audio_key_request_timeout) - - # If another client instance is already active for this - # SpotiClub user, we will will reply with HTTP 423 and - # instruct this client to wait before retrying. - if resp.status_code == 423: - try: - data = resp.json() - except Exception: # noqa: BLE001 - data = {} - retry_after = data.get("retry_after", 60) - if not isinstance(retry_after, (int, float)): - retry_after = 10 - print( - f"\n[SpotiClub API] Another client is already using this account. Waiting {int(retry_after)}s before retrying...\n" - ) - self.logger.info( - "[SpotiClub API] Queued client for user %s; waiting %ds before retry", - spoticlub_user, - int(retry_after), - ) - time.sleep(float(retry_after)) - continue - - if resp.status_code == 401: - print( - "\n[SpotiClub API][BAD_LOGIN] It seems your credentials aren't recognized by the API. Please ensure you have entered them correctly, or contact a DEV if you are absolutely certain of their validity." - ) - raise SystemExit(1) - - if resp.status_code != 200: - raise RuntimeError(f"\n[SpotiClub API] Sorry, the API returned the unexpected code {resp.status_code}: {resp.text}\n") - - data = resp.json() - key_hex = data.get("key") - if not isinstance(key_hex, str): - raise RuntimeError("\n[SpotiClub API] Sorry, API response missing 'key'\n") - - country = data.get("country") - if isinstance(country, str): - if AudioKeyManager._spoticlub_current_country != country: - AudioKeyManager._spoticlub_current_country = country - print(f"\n\n[SpotiClub API] Received {country} as the download country\n\n") - - new_serial = data.get("client_serial") - if isinstance(new_serial, str) and new_serial: - spoticlub_client_serial = new_serial - - key_bytes = util.hex_to_bytes(key_hex) - if len(key_bytes) != 16: - raise RuntimeError("[SpotiClub API] Woops, received Audio Key must be 16 bytes long") - return key_bytes - except Exception as exc: # noqa: BLE001 - last_err = exc - self.logger.warning("[SpotiClub API] Retrying the contact... (try %d): %s", tries, exc) - if not retry or tries >= 3: - break - time.sleep(5) - finally: - if audio_key_loader is not None: - try: - audio_key_loader.stop() - except Exception: - pass - - raise RuntimeError( - "Failed fetching Audio Key from API for gid: {}, fileId: {} (last error: {})".format( - util.bytes_to_hex(gid), util.bytes_to_hex(file_id), last_err)) - - class Callback: - - def key(self, key: bytes) -> None: - raise NotImplementedError - - def error(self, code: int) -> None: - raise NotImplementedError - - class SyncCallback(Callback): - __audio_key_manager: AudioKeyManager - __reference = queue.Queue() - __reference_lock = threading.Condition() - - def __init__(self, audio_key_manager: AudioKeyManager): - self.__audio_key_manager = audio_key_manager - - def key(self, key: bytes) -> None: - with self.__reference_lock: - self.__reference.put(key) - self.__reference_lock.notify_all() - - def error(self, code: int) -> None: - self.__audio_key_manager.logger.fatal( - "Audio key error, code: {}".format(code)) - with self.__reference_lock: - self.__reference.put(None) - self.__reference_lock.notify_all() - - def wait_response(self) -> bytes: - with self.__reference_lock: - self.__reference_lock.wait( - AudioKeyManager.audio_key_request_timeout) - return self.__reference.get(block=False) - - -class CdnFeedHelper: - _LOGGER: logging = logging.getLogger(__name__) - - @staticmethod - def get_url(resp: StorageResolve.StorageResolveResponse) -> str: - selected_url = random.choice(resp.cdnurl) - while "audio4-gm-fb" in selected_url or "audio-gm-fb" in selected_url: - selected_url = random.choice(resp.cdnurl) - return selected_url - - @staticmethod - def load_track( - session: Session, track: Metadata.Track, file: Metadata.AudioFile, - resp_or_url: typing.Union[StorageResolve.StorageResolveResponse, - str], preload: bool, - halt_listener: HaltListener) -> PlayableContentFeeder.LoadedStream: - if type(resp_or_url) is str: - url = resp_or_url - else: - url = CdnFeedHelper.get_url(resp_or_url) - start = int(time.time() * 1000) - key = session.audio_key().get_audio_key(track.gid, file.file_id) - audio_key_time = int(time.time() * 1000) - start - - streamer = session.cdn().stream_file(file, key, url, halt_listener) - input_stream = streamer.stream() - normalization_data = NormalizationData.read(input_stream) - if input_stream.skip(0xA7) != 0xA7: - raise IOError("Couldn't skip 0xa7 bytes!") - return PlayableContentFeeder.LoadedStream( - track, - streamer, - normalization_data, - PlayableContentFeeder.Metrics(file.file_id, preload, - -1 if preload else audio_key_time), - ) - - @staticmethod - def load_episode_external( - session: Session, episode: Metadata.Episode, - halt_listener: HaltListener) -> PlayableContentFeeder.LoadedStream: - resp = session.client().head(episode.external_url) - - if resp.status_code != 200: - CdnFeedHelper._LOGGER.warning("Couldn't resolve redirect!") - - url = resp.url - CdnFeedHelper._LOGGER.debug("Fetched external url for {}: {}".format( - util.bytes_to_hex(episode.gid), url)) - - streamer = session.cdn().stream_external_episode( - episode, url, halt_listener) - return PlayableContentFeeder.LoadedStream( - episode, - streamer, - None, - PlayableContentFeeder.Metrics(None, False, -1), - ) - - @staticmethod - def load_episode( - session: Session, - episode: Metadata.Episode, - file: Metadata.AudioFile, - resp_or_url: typing.Union[StorageResolve.StorageResolveResponse, str], - preload: bool, - halt_listener: HaltListener, - ) -> PlayableContentFeeder.LoadedStream: - if type(resp_or_url) is str: - url = resp_or_url - else: - url = CdnFeedHelper.get_url(resp_or_url) - start = int(time.time() * 1000) - key = session.audio_key().get_audio_key(episode.gid, file.file_id) - audio_key_time = int(time.time() * 1000) - start - - streamer = session.cdn().stream_file(file, key, url, halt_listener) - input_stream = streamer.stream() - normalization_data = NormalizationData.read(input_stream) - if input_stream.skip(0xA7) != 0xA7: - raise IOError("Couldn't skip 0xa7 bytes!") - return PlayableContentFeeder.LoadedStream( - episode, - streamer, - normalization_data, - PlayableContentFeeder.Metrics(file.file_id, preload, - -1 if preload else audio_key_time), - ) - - -class CdnManager: - logger: logging = logging.getLogger("Librespot:CdnManager") - __session: Session - - def __init__(self, session: Session): - self.__session = session - - def get_head(self, file_id: bytes): - response = self.__session.client() \ - .get(self.__session.get_user_attribute("head-files-url", "https://heads-fa.spotify.com/head/{file_id}") - .replace("{file_id}", util.bytes_to_hex(file_id))) - if response.status_code != 200: - raise IOError("{}".format(response.status_code)) - body = response.content - if body is None: - raise IOError("Response body is empty!") - return body - - def stream_external_episode(self, episode: Metadata.Episode, - external_url: str, - halt_listener: HaltListener): - return CdnManager.Streamer( - self.__session, - StreamId(episode=episode), - SuperAudioFormat.MP3, - CdnManager.CdnUrl(self, None, external_url), - self.__session.cache(), - NoopAudioDecrypt(), - halt_listener, - ) - - def stream_file(self, file: Metadata.AudioFile, key: bytes, url: str, - halt_listener: HaltListener): - return CdnManager.Streamer( - self.__session, - StreamId(file=file), - SuperAudioFormat.get(file.format), - CdnManager.CdnUrl(self, file.file_id, url), - self.__session.cache(), - AesAudioDecrypt(key), - halt_listener, - ) - - def get_audio_url(self, file_id: bytes): - response = self.__session.api()\ - .send("GET", "/storage-resolve/files/audio/interactive/{}".format(util.bytes_to_hex(file_id)), None, None) - if response.status_code != 200: - raise IOError(response.status_code) - body = response.content - if body is None: - raise IOError("Response body is empty!") - proto = StorageResolve.StorageResolveResponse() - proto.ParseFromString(body) - if proto.result == StorageResolve.StorageResolveResponse.Result.CDN: - url = random.choice(proto.cdnurl) - self.logger.debug("Fetched CDN url for {}: {}".format( - util.bytes_to_hex(file_id), url)) - return url - raise CdnManager.CdnException( - "Could not retrieve CDN url! result: {}".format(proto.result)) - - class CdnException(Exception): - pass - - class InternalResponse: - buffer: bytes - headers: typing.Dict[str, str] - - def __init__(self, buffer: bytes, headers: typing.Dict[str, str]): - self.buffer = buffer - self.headers = headers - - class CdnUrl: - __cdn_manager = None - __file_id: bytes - __expiration: int - url: str - - def __init__(self, cdn_manager, file_id: typing.Union[bytes, None], - url: str): - self.__cdn_manager: CdnManager = cdn_manager - self.__file_id = file_id - self.set_url(url) - - def url(self): - if self.__expiration == -1: - return self.url - if self.__expiration <= int(time.time() * 1000) + 5 * 60 * 1000: - self.url = self.__cdn_manager.get_audio_url(self.__file_id) - return self.url - - def set_url(self, url: str): - self.url = url - if self.__file_id is not None: - token_url = urllib.parse.urlparse(url) - token_query = urllib.parse.parse_qs(token_url.query) - token_list = token_query.get("__token__") - try: - token_str = str(token_list[0]) - except TypeError: - token_str = "" - expires_list = token_query.get("Expires") - try: - expires_str = str(expires_list[0]) - except TypeError: - expires_str = "" - if token_str != "None" and len(token_str) != 0: - expire_at = None - split = token_str.split("~") - for s in split: - try: - i = s.index("=") - except ValueError: - continue - if s[:i] == "exp": - expire_at = int(s[i + 1:]) - break - if expire_at is None: - self.__expiration = -1 - self.__cdn_manager.logger.warning( - "Invalid __token__ in CDN url: {}".format(url)) - return - self.__expiration = expire_at * 1000 - elif expires_str != "None" and len(expires_str) != 0: - expires_at = None - expires_str = expires_str.split("~")[0] - expires_at = int(expires_str) - if expires_at is None: - self.__expiration = -1 - self.__cdn_manager.logger.warning("Invalid Expires param in CDN url: {}".format(url)) - return - self.__expiration = expires_at * 1000 - else: - try: - i = token_url.query.index("_") - except ValueError: - self.__expiration = -1 - self.__cdn_manager.logger \ - .warning("Couldn't extract expiration, invalid parameter in CDN url: {}".format(url)) - return - self.__expiration = int(token_url.query[:i]) * 1000 - - else: - self.__expiration = -1 - - class Streamer(GeneralAudioStream, GeneralWritableStream): - available: typing.List[bool] - buffer: typing.List[bytes] - chunks: int - executor_service = concurrent.futures.ThreadPoolExecutor() - halt_listener: HaltListener - requested: typing.List[bool] - size: int - __audio_format: SuperAudioFormat - __audio_decrypt: AudioDecrypt - __cdn_url: CdnManager.CdnUrl - __internal_stream: InternalStream - __session: Session - __stream_id: StreamId - - def __init__(self, session: Session, stream_id: StreamId, - audio_format: SuperAudioFormat, - cdn_url: CdnManager.CdnUrl, cache: CacheManager, - audio_decrypt: AudioDecrypt, halt_listener: HaltListener): - self.__session = session - self.__stream_id = stream_id - self.__audio_format = audio_format - self.__audio_decrypt = audio_decrypt - self.__cdn_url = cdn_url - self.halt_listener = halt_listener - response = self.request(range_start=0, - range_end=ChannelManager.chunk_size - 1) - content_range = response.headers.get("Content-Range") - if content_range is None: - content_range = response.headers.get("content-range") - if content_range is None: - raise IOError("Missing Content-Range header!") - split = content_range.split("/") - self.size = int(split[1]) - self.chunks = int(math.ceil(self.size / ChannelManager.chunk_size)) - first_chunk = response.buffer - self.available = [False for _ in range(self.chunks)] - self.requested = [False for _ in range(self.chunks)] - self.buffer = [b"" for _ in range(self.chunks)] - self.__internal_stream = CdnManager.Streamer.InternalStream( - self, False) - self.requested[0] = True - self.write_chunk(first_chunk, 0, False) - - def write_chunk(self, chunk: bytes, chunk_index: int, - cached: bool) -> None: - if self.__internal_stream.is_closed(): - return - self.__session.logger.debug( - "Chunk {}/{} completed, cached: {}, stream: {}".format( - chunk_index + 1, self.chunks, cached, self.describe())) - self.buffer[chunk_index] = self.__audio_decrypt.decrypt_chunk( - chunk_index, chunk) - self.__internal_stream.notify_chunk_available(chunk_index) - - def stream(self) -> AbsChunkedInputStream: - return self.__internal_stream - - def codec(self) -> SuperAudioFormat: - return self.__audio_format - - def describe(self) -> str: - if self.__stream_id.is_episode(): - return "episode_gid: {}".format( - self.__stream_id.get_episode_gid()) - return "file_id: {}".format(self.__stream_id.get_file_id()) - - def decrypt_time_ms(self) -> int: - return self.__audio_decrypt.decrypt_time_ms() - - def request_chunk(self, index: int) -> None: - response = self.request(index) - self.write_chunk(response.buffer, index, False) - - def request(self, chunk: int = None, range_start: int = None, range_end: int = None)\ - -> CdnManager.InternalResponse: - if chunk is None and range_start is None and range_end is None: - raise TypeError() - if chunk is not None: - range_start = ChannelManager.chunk_size * chunk - range_end = (chunk + 1) * ChannelManager.chunk_size - 1 - response = self.__session.client().get( - self.__cdn_url.url, - headers={ - "Range": "bytes={}-{}".format(range_start, range_end) - }, - ) - if response.status_code != 206: - raise IOError(response.status_code) - body = response.content - if body is None: - raise IOError("Response body is empty!") - return CdnManager.InternalResponse(body, dict(response.headers)) - - class InternalStream(AbsChunkedInputStream): - streamer: CdnManager.Streamer - - def __init__(self, streamer, retry_on_chunk_error: bool): - self.streamer: CdnManager.Streamer = streamer - super().__init__(retry_on_chunk_error) - - def buffer(self) -> typing.List[bytes]: - return self.streamer.buffer - - def size(self) -> int: - return self.streamer.size - - def close(self) -> None: - super().close() - del self.streamer.buffer - - def requested_chunks(self) -> typing.List[bool]: - return self.streamer.requested - - def available_chunks(self) -> typing.List[bool]: - return self.streamer.available - - def chunks(self) -> int: - return self.streamer.chunks - - def request_chunk_from_stream(self, index: int) -> None: - self.streamer.executor_service \ - .submit(lambda: self.streamer.request_chunk(index)) - - def stream_read_halted(self, chunk: int, _time: int) -> None: - if self.streamer.halt_listener is not None: - self.streamer.executor_service\ - .submit(lambda: self.streamer.halt_listener.stream_read_halted(chunk, _time)) - - def stream_read_resumed(self, chunk: int, _time: int) -> None: - if self.streamer.halt_listener is not None: - self.streamer.executor_service \ - .submit(lambda: self.streamer.halt_listener.stream_read_resumed(chunk, _time)) - - -class NormalizationData: - _LOGGER: logging = logging.getLogger(__name__) - track_gain_db: float - track_peak: float - album_gain_db: float - album_peak: float - - def __init__(self, track_gain_db: float, track_peak: float, - album_gain_db: float, album_peak: float): - self.track_gain_db = track_gain_db - self.track_peak = track_peak - self.album_gain_db = album_gain_db - self.album_peak = album_peak - - self._LOGGER.debug( - "Loaded normalization data, track_gain: {}, track_peak: {}, album_gain: {}, album_peak: {}" - .format(track_gain_db, track_peak, album_gain_db, album_peak)) - - @staticmethod - def read(input_stream: AbsChunkedInputStream) -> NormalizationData: - input_stream.seek(144) - data = input_stream.read(4 * 4) - input_stream.seek(0) - buffer = io.BytesIO(data) - return NormalizationData( - struct.unpack(" float: - normalisation_factor = float( - math.pow(10, (self.track_gain_db + normalisation_pregain) / 20)) - if normalisation_factor * self.track_peak > 1: - self._LOGGER \ - .warning("Reducing normalisation factor to prevent clipping. Please add negative pregain to avoid.") - normalisation_factor = 1 / self.track_peak - return normalisation_factor - - -class PlayableContentFeeder: - logger = logging.getLogger("Librespot:PlayableContentFeeder") - storage_resolve_interactive = "/storage-resolve/files/audio/interactive/{}" - storage_resolve_interactive_prefetch = "/storage-resolve/files/audio/interactive_prefetch/{}" - __session: Session - - def __init__(self, session: Session): - self.__session = session - - def load(self, playable_id: PlayableId, - audio_quality_picker: AudioQualityPicker, preload: bool, - halt_listener: typing.Union[HaltListener, None]): - if type(playable_id) is TrackId: - return self.load_track(playable_id, audio_quality_picker, preload, - halt_listener) - if type(playable_id) is EpisodeId: - return self.load_episode(playable_id, audio_quality_picker, - preload, halt_listener) - raise TypeError("Unknown content: {}".format(playable_id)) - - def load_stream(self, file: Metadata.AudioFile, track: Metadata.Track, - episode: Metadata.Episode, preload: bool, - halt_lister: HaltListener): - if track is None and episode is None: - raise RuntimeError() - response = self.resolve_storage_interactive(file.file_id, preload) - if response.result == StorageResolve.StorageResolveResponse.Result.CDN: - if track is not None: - return CdnFeedHelper.load_track(self.__session, track, file, - response, preload, halt_lister) - return CdnFeedHelper.load_episode(self.__session, episode, file, - response, preload, halt_lister) - if response.result == StorageResolve.StorageResolveResponse.Result.STORAGE: - if track is None: - pass - elif response.result == StorageResolve.StorageResolveResponse.Result.RESTRICTED: - raise RuntimeError("Content is restricted!") - elif response.result == StorageResolve.StorageResolveResponse.Response.UNRECOGNIZED: - raise RuntimeError("Content is unrecognized!") - else: - raise RuntimeError("Unknown result: {}".format(response.result)) - - def load_episode(self, episode_id: EpisodeId, - audio_quality_picker: AudioQualityPicker, preload: bool, - halt_listener: HaltListener) -> LoadedStream: - episode = self.__session.api().get_metadata_4_episode(episode_id) - if episode.external_url: - return CdnFeedHelper.load_episode_external(self.__session, episode, - halt_listener) - file = audio_quality_picker.get_file(episode.audio) - if file is None: - self.logger.fatal( - "Couldn't find any suitable audio file, available: {}".format( - episode.audio)) - return self.load_stream(file, None, episode, preload, halt_listener) - - def load_track(self, track_id_or_track: typing.Union[TrackId, - Metadata.Track], - audio_quality_picker: AudioQualityPicker, preload: bool, - halt_listener: HaltListener): - if isinstance(track_id_or_track, TrackId): - track_id = track_id_or_track - original = self.__session.api().get_metadata_4_track(track_id) - - if len(original.file) == 0: - self._populate_track_files_from_extended_metadata(track_id, original) - - if len(original.file) == 0: - for alt in original.alternative: - if len(alt.file) > 0 or not alt.gid: - continue - gid_hex = util.bytes_to_hex(alt.gid) - if len(gid_hex) != 32: - continue - try: - alt_track_id = TrackId.from_hex(gid_hex) - except Exception: - continue - self._populate_track_files_from_extended_metadata(alt_track_id, alt) - - track = self.pick_alternative_if_necessary(original) - if track is None: - raise RuntimeError("Cannot get alternative track") - else: - track = track_id_or_track - try: - gid_hex = util.bytes_to_hex(track.gid) - input_track_id = TrackId.from_hex(gid_hex) if len(gid_hex) == 32 else None - except Exception: - input_track_id = None - if input_track_id is not None and len(track.file) == 0: - self._populate_track_files_from_extended_metadata(input_track_id, track) - file = audio_quality_picker.get_file(track.file) - if file is None: - self.logger.fatal( - "Couldn't find any suitable audio file, available: {}".format( - track.file)) - raise FeederException() - return self.load_stream(file, track, None, preload, halt_listener) - - def pick_alternative_if_necessary( - self, track: Metadata.Track) -> typing.Union[Metadata.Track, None]: - if len(track.file) > 0: - return track - for alt in track.alternative: - if len(alt.file) > 0: - return Metadata.Track( - gid=track.gid, - name=track.name, - album=track.album, - artist=track.artist, - number=track.number, - disc_number=track.disc_number, - duration=track.duration, - popularity=track.popularity, - explicit=track.explicit, - external_id=track.external_id, - restriction=track.restriction, - file=alt.file, - sale_period=track.sale_period, - preview=track.preview, - tags=track.tags, - earliest_live_timestamp=track.earliest_live_timestamp, - has_lyrics=track.has_lyrics, - availability=track.availability, - licensor=track.licensor) - return None - - def _populate_track_files_from_extended_metadata( - self, track_id: TrackId, track_proto: Metadata.Track) -> bool: - if len(track_proto.file) > 0: - return True - try: - extension = self.__session.api().get_audio_files_extension(track_id) - except Exception as exc: # pragma: no cover - network errors handled elsewhere - self.logger.debug( - "Extended metadata lookup failed for %s: %s", - track_id.to_spotify_uri(), - exc, - ) - return False - if extension is None or len(extension.files) == 0: - return len(track_proto.file) > 0 - - existing_ids = {util.bytes_to_hex(audio.file_id) for audio in track_proto.file} - added_count = 0 - - for ext_file in extension.files: - if not ext_file.HasField("file"): - continue - file_id_bytes = ext_file.file.file_id - file_id_hex = util.bytes_to_hex(file_id_bytes) - if file_id_hex in existing_ids: - continue - track_proto.file.add().CopyFrom(ext_file.file) - existing_ids.add(file_id_hex) - added_count += 1 - - if added_count: - self.logger.debug( - "Enriched %s with %d file(s) from extended metadata", - track_id.to_spotify_uri(), - added_count, - ) - - return len(track_proto.file) > 0 - - def resolve_storage_interactive( - self, file_id: bytes, - preload: bool) -> StorageResolve.StorageResolveResponse: - resp = self.__session.api().send( - "GET", - (self.storage_resolve_interactive_prefetch - if preload else self.storage_resolve_interactive).format( - util.bytes_to_hex(file_id)), - None, - None, - ) - if resp.status_code != 200: - raise RuntimeError(resp.status_code) - body = resp.content - if body is None: - raise RuntimeError("Response body is empty!") - storage_resolve_response = StorageResolve.StorageResolveResponse() - storage_resolve_response.ParseFromString(body) - return storage_resolve_response - - class LoadedStream: - episode: Metadata.Episode - track: Metadata.Track - input_stream: GeneralAudioStream - normalization_data: NormalizationData - metrics: PlayableContentFeeder.Metrics - - def __init__(self, track_or_episode: typing.Union[Metadata.Track, - Metadata.Episode], - input_stream: GeneralAudioStream, - normalization_data: typing.Union[NormalizationData, None], - metrics: PlayableContentFeeder.Metrics): - if type(track_or_episode) is Metadata.Track: - self.track = track_or_episode - self.episode = None - elif type(track_or_episode) is Metadata.Episode: - self.track = None - self.episode = track_or_episode - else: - raise TypeError() - self.input_stream = input_stream - self.normalization_data = normalization_data - self.metrics = metrics - - class Metrics: - file_id: str - preloaded_audio_key: bool - audio_key_time: int - - def __init__(self, file_id: typing.Union[bytes, None], - preloaded_audio_key: bool, audio_key_time: int): - self.file_id = None if file_id is None else util.bytes_to_hex( - file_id) - self.preloaded_audio_key = preloaded_audio_key - self.audio_key_time = audio_key_time - if preloaded_audio_key and audio_key_time != -1: - raise RuntimeError() - - -class StreamId: - file_id: bytes - episode_gid: bytes - - def __init__(self, - file: Metadata.AudioFile = None, - episode: Metadata.Episode = None): - if file is None and episode is None: - return - self.file_id = None if file is None else file.file_id - self.episode_gid = None if episode is None else episode.gid - - def get_file_id(self): - if self.file_id is None: - raise RuntimeError("Not a file!") - return util.bytes_to_hex(self.file_id) - - def is_episode(self): - return self.episode_gid is not None - - def get_episode_gid(self): - if self.episode_gid is None: - raise RuntimeError("Not an episode!") - return util.bytes_to_hex(self.episode_gid) diff --git a/librespot/audio/__pycache__/__init__.cpython-312.pyc b/librespot/audio/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index f9c6619..0000000 Binary files a/librespot/audio/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/librespot/audio/__pycache__/__init__.cpython-314.pyc b/librespot/audio/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index 3e9fa8f..0000000 Binary files a/librespot/audio/__pycache__/__init__.cpython-314.pyc and /dev/null differ diff --git a/librespot/audio/__pycache__/decoders.cpython-312.pyc b/librespot/audio/__pycache__/decoders.cpython-312.pyc deleted file mode 100644 index 0945a57..0000000 Binary files a/librespot/audio/__pycache__/decoders.cpython-312.pyc and /dev/null differ diff --git a/librespot/audio/__pycache__/decrypt.cpython-312.pyc b/librespot/audio/__pycache__/decrypt.cpython-312.pyc deleted file mode 100644 index f5e5eeb..0000000 Binary files a/librespot/audio/__pycache__/decrypt.cpython-312.pyc and /dev/null differ diff --git a/librespot/audio/__pycache__/format.cpython-312.pyc b/librespot/audio/__pycache__/format.cpython-312.pyc deleted file mode 100644 index 593b267..0000000 Binary files a/librespot/audio/__pycache__/format.cpython-312.pyc and /dev/null differ diff --git a/librespot/audio/__pycache__/storage.cpython-312.pyc b/librespot/audio/__pycache__/storage.cpython-312.pyc deleted file mode 100644 index eb85594..0000000 Binary files a/librespot/audio/__pycache__/storage.cpython-312.pyc and /dev/null differ diff --git a/librespot/audio/decoders.py b/librespot/audio/decoders.py deleted file mode 100644 index ddb726c..0000000 --- a/librespot/audio/decoders.py +++ /dev/null @@ -1,81 +0,0 @@ -from __future__ import annotations -from librespot.audio import SuperAudioFormat -from librespot.proto import Metadata_pb2 as Metadata -from librespot.proto.Metadata_pb2 import AudioFile -from librespot.structure import AudioQualityPicker -import enum -import logging -import typing - - -class AudioQuality(enum.Enum): - NORMAL = 0x00 - HIGH = 0x01 - VERY_HIGH = 0x02 - - @staticmethod - def get_quality(audio_format: AudioFile.Format) -> AudioQuality: - if audio_format in [ - AudioFile.MP3_96, - AudioFile.OGG_VORBIS_96, - AudioFile.AAC_24_NORM, - ]: - return AudioQuality.NORMAL - if audio_format in [ - AudioFile.MP3_160, - AudioFile.MP3_160_ENC, - AudioFile.OGG_VORBIS_160, - AudioFile.AAC_24, - ]: - return AudioQuality.HIGH - if audio_format in [ - AudioFile.MP3_320, - AudioFile.MP3_256, - AudioFile.OGG_VORBIS_320, - AudioFile.AAC_48, - ]: - return AudioQuality.VERY_HIGH - raise RuntimeError("Unknown format: {}".format(format)) - - def get_matches(self, - files: typing.List[AudioFile]) -> typing.List[AudioFile]: - file_list = [] - for file in files: - if hasattr(file, "format") and AudioQuality.get_quality( - file.format) == self: - file_list.append(file) - return file_list - - -class VorbisOnlyAudioQuality(AudioQualityPicker): - logger = logging.getLogger("Librespot:Player:VorbisOnlyAudioQuality") - preferred: AudioQuality - - def __init__(self, preferred: AudioQuality): - self.preferred = preferred - - @staticmethod - def get_vorbis_file(files: typing.List[Metadata.AudioFile]): - for file in files: - if file.HasField("format") and SuperAudioFormat.get( - file.format) == SuperAudioFormat.VORBIS: - return file - return None - - def get_file(self, files: typing.List[Metadata.AudioFile]): - matches: typing.List[Metadata.AudioFile] = self.preferred.get_matches( - files) - vorbis: Metadata.AudioFile = VorbisOnlyAudioQuality.get_vorbis_file( - matches) - if vorbis is None: - vorbis: Metadata.AudioFile = VorbisOnlyAudioQuality.get_vorbis_file( - files) - if vorbis is not None: - self.logger.warning( - "Using {} because preferred {} couldn't be found.".format( - Metadata.AudioFile.Format.Name(vorbis.format), - self.preferred)) - else: - self.logger.fatal( - "Couldn't find any Vorbis file, available: {}") - return vorbis diff --git a/librespot/audio/decrypt.py b/librespot/audio/decrypt.py deleted file mode 100644 index e72cd37..0000000 --- a/librespot/audio/decrypt.py +++ /dev/null @@ -1,45 +0,0 @@ -from __future__ import annotations -from Cryptodome.Cipher import AES -from Cryptodome.Util import Counter -from librespot.audio.storage import ChannelManager -from librespot.structure import AudioDecrypt -import io -import time - - -class AesAudioDecrypt(AudioDecrypt): - audio_aes_iv = b'r\xe0g\xfb\xdd\xcb\xcfw\xeb\xe8\xbcd?c\r\x93' - cipher = None - decrypt_count = 0 - decrypt_total_time = 0 - iv_int = int.from_bytes(audio_aes_iv, "big") - iv_diff = 0x100 - key: bytes - - def __init__(self, key: bytes): - self.key = key - - def decrypt_chunk(self, chunk_index: int, buffer: bytes): - new_buffer = io.BytesIO() - iv = self.iv_int + int(ChannelManager.chunk_size * chunk_index / 16) - start = time.time_ns() - for i in range(0, len(buffer), 4096): - cipher = AES.new(key=self.key, - mode=AES.MODE_CTR, - counter=Counter.new(128, initial_value=iv)) - count = min(4096, len(buffer) - i) - decrypted_buffer = cipher.decrypt(buffer[i:i + count]) - new_buffer.write(decrypted_buffer) - if count != len(decrypted_buffer): - raise RuntimeError( - "Couldn't process all data, actual: {}, expected: {}". - format(len(decrypted_buffer), count)) - iv += self.iv_diff - self.decrypt_total_time += time.time_ns() - start - self.decrypt_count += 1 - new_buffer.seek(0) - return new_buffer.read() - - def decrypt_time_ms(self): - return 0 if self.decrypt_count == 0 else int( - (self.decrypt_total_time / self.decrypt_count) / 1000000) diff --git a/librespot/audio/format.py b/librespot/audio/format.py deleted file mode 100644 index 24cb6d9..0000000 --- a/librespot/audio/format.py +++ /dev/null @@ -1,32 +0,0 @@ -from librespot.proto import Metadata_pb2 as Metadata -import enum - - -class SuperAudioFormat(enum.Enum): - MP3 = 0x00 - VORBIS = 0x01 - AAC = 0x02 - - @staticmethod - def get(audio_format: Metadata.AudioFile.Format): - if audio_format in [ - Metadata.AudioFile.Format.OGG_VORBIS_96, - Metadata.AudioFile.Format.OGG_VORBIS_160, - Metadata.AudioFile.Format.OGG_VORBIS_320, - ]: - return SuperAudioFormat.VORBIS - if audio_format in [ - Metadata.AudioFile.Format.MP3_256, - Metadata.AudioFile.Format.MP3_320, - Metadata.AudioFile.Format.MP3_160, - Metadata.AudioFile.Format.MP3_96, - Metadata.AudioFile.Format.MP3_160_ENC, - ]: - return SuperAudioFormat.MP3 - if audio_format in [ - Metadata.AudioFile.Format.AAC_24, - Metadata.AudioFile.Format.AAC_48, - Metadata.AudioFile.Format.AAC_24_NORM, - ]: - return SuperAudioFormat.AAC - raise RuntimeError("Unknown audio format: {}".format(audio_format)) diff --git a/librespot/audio/storage.py b/librespot/audio/storage.py deleted file mode 100644 index 51321e6..0000000 --- a/librespot/audio/storage.py +++ /dev/null @@ -1,139 +0,0 @@ -from __future__ import annotations -from librespot import util -from librespot.crypto import Packet -from librespot.proto.Metadata_pb2 import AudioFile -from librespot.structure import Closeable, PacketsReceiver -import concurrent.futures -import io -import logging -import queue -import struct -import threading -import typing - -if typing.TYPE_CHECKING: - from librespot.core import Session - - -class ChannelManager(Closeable, PacketsReceiver): - channels: typing.Dict[int, Channel] = {} - chunk_size = 128 * 1024 - executor_service = concurrent.futures.ThreadPoolExecutor() - logger = logging.getLogger("Librespot:ChannelManager") - seq_holder = 0 - seq_holder_lock = threading.Condition() - __session: Session = None - - def __init__(self, session: Session): - self.__session = session - - def request_chunk(self, file_id: bytes, index: int, file: AudioFile): - start = int(index * self.chunk_size / 4) - end = int((index + 1) * self.chunk_size / 4) - channel = ChannelManager.Channel(self, file, index) - self.channels[channel.chunk_id] = channel - out = io.BytesIO() - out.write(struct.pack(">H", channel.chunk_id)) - out.write(struct.pack(">i", 0x00000000)) - out.write(struct.pack(">i", 0x00000000)) - out.write(struct.pack(">i", 0x00004E20)) - out.write(struct.pack(">i", 0x00030D40)) - out.write(file_id) - out.write(struct.pack(">i", start)) - out.write(struct.pack(">i", end)) - out.seek(0) - self.__session.send(Packet.Type.stream_chunk, out.read()) - - def dispatch(self, packet: Packet) -> None: - payload = io.BytesIO(packet.payload) - if packet.is_cmd(Packet.Type.stream_chunk_res): - chunk_id = struct.unpack(">H", payload.read(2))[0] - channel = self.channels.get(chunk_id) - if channel is None: - self.logger.warning( - "Couldn't find channel, id: {}, received: {}".format( - chunk_id, len(packet.payload))) - return - channel.add_to_queue(payload) - elif packet.is_cmd(Packet.Type.channel_error): - chunk_id = struct.unpack(">H", payload.read(2))[0] - channel = self.channels.get(chunk_id) - if channel is None: - self.logger.warning( - "Dropping channel error, id: {}, code: {}".format( - chunk_id, - struct.unpack(">H", payload.read(2))[0])) - return - channel.stream_error(struct.unpack(">H", payload.read(2))[0]) - else: - self.logger.warning( - "Couldn't handle packet, cmd: {}, payload: {}".format( - packet.cmd, util.bytes_to_hex(packet.payload))) - - def close(self) -> None: - self.executor_service.shutdown() - - class Channel: - channel_manager: ChannelManager - chunk_id: int - q = queue.Queue() - __buffer: io.BytesIO - __chunk_index: int - __file: AudioFile - __header: bool = True - - def __init__(self, channel_manager: ChannelManager, file: AudioFile, - chunk_index: int): - self.__buffer = io.BytesIO() - self.channel_manager = channel_manager - self.__file = file - self.__chunk_index = chunk_index - with self.channel_manager.seq_holder_lock: - self.chunk_id = self.channel_manager.seq_holder - self.channel_manager.seq_holder += 1 - self.channel_manager.executor_service.submit( - lambda: ChannelManager.Channel.Handler(self)) - - def _handle(self, payload: bytes) -> bool: - if len(payload) == 0: - if not self.__header: - self.__file.write_chunk(payload, self.__chunk_index, False) - return True - self.channel_manager.logger.debug( - "Received empty chunk, skipping.") - return False - if self.__header: - length: int - while len(payload.buffer) > 0: - length = payload.read_short() - if not length > 0: - break - header_id = payload.read_byte() - header_data = payload.read(length - 1) - self.__file.write_header(int.from_bytes(header_id, "big"), - bytearray(header_data), False) - self.__header = False - else: - self.__buffer.write(payload.read(len(payload.buffer))) - return False - - def add_to_queue(self, payload): - self.q.put(payload) - - def stream_error(self, code: int) -> None: - self.__file.stream_error(self.__chunk_index, code) - - class Handler: - __channel: ChannelManager.Channel = None - - def __init__(self, channel: ChannelManager.Channel): - self.__channel = channel - - def run(self) -> None: - self.__channel.channel_manager.logger.debug( - "ChannelManager.Handler is starting") - with self.__channel.q.all_tasks_done: - self.__channel.channel_manager.channels.pop( - self.__channel.chunk_id) - self.__channel.channel_manager.logger.debug( - "ChannelManager.Handler is shutting down") diff --git a/librespot/cache.py b/librespot/cache.py deleted file mode 100644 index 7937c46..0000000 --- a/librespot/cache.py +++ /dev/null @@ -1,18 +0,0 @@ -from __future__ import annotations -import typing - -if typing.TYPE_CHECKING: - from librespot.core import Session - - -class CacheManager: - clean_up_threshold = 604800000 - header_hash = 253 - header_timestamp = 254 - parent: str - - def __init__(self, session: Session): - """ - @Todo Implement function - :param session: - """ diff --git a/librespot/core.py b/librespot/core.py deleted file mode 100644 index c5cacb5..0000000 --- a/librespot/core.py +++ /dev/null @@ -1,2758 +0,0 @@ -from __future__ import annotations - -import base64 -import binascii -import concurrent.futures -import enum -import gzip -import io -import json -import logging -import os -import random -import sched -import socket -import struct -import threading -import time -import typing -import urllib.parse -from collections.abc import Iterable - -import defusedxml.ElementTree -import requests -import websocket -from google.protobuf import message as _message -from Cryptodome import Random -from Cryptodome.Cipher import AES -from Cryptodome.Hash import HMAC -from Cryptodome.Hash import SHA1 -from Cryptodome.Protocol.KDF import PBKDF2 -from Cryptodome.PublicKey import RSA -from Cryptodome.Signature import PKCS1_v1_5 - -from librespot import util -from librespot import Version -from librespot.audio import AudioKeyManager -from librespot.audio import CdnManager -from librespot.audio import PlayableContentFeeder -from librespot.audio.storage import ChannelManager -from librespot.cache import CacheManager -from librespot.crypto import CipherPair -from librespot.crypto import DiffieHellman -from librespot.crypto import Packet -from librespot.mercury import MercuryClient -from librespot.mercury import MercuryRequests -from librespot.mercury import RawMercuryRequest -from librespot.metadata import AlbumId -from librespot.metadata import ArtistId -from librespot.metadata import EpisodeId -from librespot.metadata import PlaylistId -from librespot.metadata import ShowId -from librespot.metadata import TrackId -from librespot.proto import Authentication_pb2 as Authentication -from librespot.proto import ClientToken_pb2 as ClientToken -from librespot.proto import Connect_pb2 as Connect -from librespot.proto import Connectivity_pb2 as Connectivity -from librespot.proto import Keyexchange_pb2 as Keyexchange -from librespot.proto import Metadata_pb2 as Metadata -from librespot.proto import Playlist4External_pb2 as Playlist4External -from librespot.proto_ext import audio_files_extension_pb2 -from librespot.proto_ext import extended_metadata_pb2 -from librespot.proto_ext import extension_kind_pb2 -try: - from librespot.proto.spotify.login5.v3 import Login5_pb2 as Login5 - from librespot.proto.spotify.login5.v3 import ClientInfo_pb2 as Login5ClientInfo - from librespot.proto.spotify.login5.v3.credentials import Credentials_pb2 as Login5Credentials - LOGIN5_AVAILABLE = True -except ImportError as e: - # Login5 protobuf files not available, will use fallback - LOGIN5_AVAILABLE = False - Login5 = None - Login5ClientInfo = None - Login5Credentials = None -from librespot.proto.ExplicitContentPubsub_pb2 import UserAttributesUpdate -from librespot.structure import Closeable -from librespot.structure import MessageListener -from librespot.structure import RequestListener -from librespot.structure import SubListener - - -class ApiClient(Closeable): - """ """ - logger = logging.getLogger("Librespot:ApiClient") - __base_url: str - __client_token_str: str = None - __session: Session - - def __init__(self, session: Session): - self.__session = session - self.__base_url = "https://{}".format(ApResolver.get_random_spclient()) - - def build_request( - self, - method: str, - suffix: str, - headers: typing.Union[None, typing.Dict[str, str]], - body: typing.Union[None, bytes], - url: typing.Union[None, str], - ) -> requests.PreparedRequest: - """ - - :param method: str: - :param suffix: str: - :param headers: typing.Union[None: - :param typing.Dict[str: - :param str]]: - :param body: typing.Union[None: - :param bytes]: - :param url: typing.Union[None: - :param str]: - - """ - if self.__client_token_str is None: - resp = self.__client_token() - self.__client_token_str = resp.granted_token.token - self.logger.debug("Updated client token: {}".format( - self.__client_token_str)) - - merged_headers: dict[str, str] = {} - if headers is not None: - merged_headers.update(headers) - - if "Authorization" not in merged_headers: - merged_headers["Authorization"] = "Bearer {}".format( - self.__session.tokens().get("playlist-read")) - - if "client-token" not in merged_headers: - merged_headers["client-token"] = self.__client_token_str - - full_url = (self.__base_url if url is None else url) + suffix - request = requests.Request( - method=method, - url=full_url, - headers=merged_headers, - data=body, - ) - session = self.__session.client() - return session.prepare_request(request) - - def send( - self, - method: str, - suffix: str, - headers: typing.Union[None, typing.Dict[str, str]], - body: typing.Union[None, bytes], - ) -> requests.Response: - """ - - :param method: str: - :param suffix: str: - :param headers: typing.Union[None: - :param typing.Dict[str: - :param str]]: - :param body: typing.Union[None: - :param bytes]: - - """ - response = self.__session.client().send( - self.build_request(method, suffix, headers, body, None)) - return response - - def sendToUrl( - self, - method: str, - url: str, - suffix: str, - headers: typing.Union[None, typing.Dict[str, str]], - body: typing.Union[None, bytes], - ) -> requests.Response: - """ - :param method: str: - :param url: str: - :param suffix: str: - :param headers: typing.Union[None: - :param typing.Dict[str: - :param str]]: - :param body: typing.Union[None: - :param bytes]: - """ - response = self.__session.client().send( - self.build_request(method, suffix, headers, body, url)) - return response - - def put_connect_state(self, connection_id: str, - proto: Connect.PutStateRequest) -> None: - """ - - :param connection_id: str: - :param proto: Connect.PutStateRequest: - - """ - response = self.send( - "PUT", - "/connect-state/v1/devices/{}".format(self.__session.device_id()), - { - "Content-Type": "application/protobuf", - "X-Spotify-Connection-Id": connection_id, - }, - proto.SerializeToString(), - ) - if response.status_code == 413: - self.logger.warning( - "PUT state payload is too large: {} bytes uncompressed.". - format(len(proto.SerializeToString()))) - elif response.status_code != 200: - self.logger.warning("PUT state returned {}. headers: {}".format( - response.status_code, response.headers)) - - def get_metadata_4_track(self, track: TrackId) -> Metadata.Track: - """ - - :param track: TrackId: - - """ - response = self.sendToUrl("GET", "https://spclient.wg.spotify.com", - "/metadata/4/track/{}".format(track.hex_id()), - None, None) - ApiClient.StatusCodeException.check_status(response) - body = response.content - if body is None: - raise RuntimeError() - proto = Metadata.Track() - proto.ParseFromString(body) - return proto - - def get_metadata_4_episode(self, episode: EpisodeId) -> Metadata.Episode: - """ - - :param episode: EpisodeId: - - """ - response = self.sendToUrl("GET", "https://spclient.wg.spotify.com", - "/metadata/4/episode/{}".format(episode.hex_id()), - None, None) - ApiClient.StatusCodeException.check_status(response) - body = response.content - if body is None: - raise IOError() - proto = Metadata.Episode() - proto.ParseFromString(body) - return proto - - def get_metadata_4_album(self, album: AlbumId) -> Metadata.Album: - """ - - :param album: AlbumId: - - """ - response = self.sendToUrl("GET", "https://spclient.wg.spotify.com", - "/metadata/4/album/{}".format(album.hex_id()), - None, None) - ApiClient.StatusCodeException.check_status(response) - - body = response.content - if body is None: - raise IOError() - proto = Metadata.Album() - proto.ParseFromString(body) - return proto - - def get_metadata_4_artist(self, artist: ArtistId) -> Metadata.Artist: - """ - - :param artist: ArtistId: - - """ - response = self.sendToUrl("GET", "https://spclient.wg.spotify.com", - "/metadata/4/artist/{}".format(artist.hex_id()), - None, None) - ApiClient.StatusCodeException.check_status(response) - body = response.content - if body is None: - raise IOError() - proto = Metadata.Artist() - proto.ParseFromString(body) - return proto - - def get_metadata_4_show(self, show: ShowId) -> Metadata.Show: - """ - - :param show: ShowId: - - """ - response = self.send("GET", - "/metadata/4/show/{}".format(show.hex_id()), None, - None) - ApiClient.StatusCodeException.check_status(response) - body = response.content - if body is None: - raise IOError() - proto = Metadata.Show() - proto.ParseFromString(body) - return proto - - def get_playlist(self, - _id: PlaylistId) -> Playlist4External.SelectedListContent: - """ - - :param _id: PlaylistId: - - """ - response = self.send("GET", - "/playlist/v2/playlist/{}".format(_id.id()), None, - None) - ApiClient.StatusCodeException.check_status(response) - body = response.content - if body is None: - raise IOError() - proto = Playlist4External.SelectedListContent() - proto.ParseFromString(body) - return proto - - def get_audio_files_extension( - self, track: TrackId - ) -> typing.Optional[audio_files_extension_pb2.AudioFilesExtensionResponse]: - """Fetch audio file metadata via extended metadata for a given track.""" - spotify_uri = track.to_spotify_uri() - - request = extended_metadata_pb2.BatchedEntityRequest() - - header = request.header - - def _resolve_country_code() -> typing.Optional[str]: - code = getattr(self.__session, "_Session__country_code", None) - if code: - code = str(code).strip().upper() - if len(code) == 2 and code.isalpha(): - return code - return None - - country_code = _resolve_country_code() - if country_code: - header.country = country_code - - try: - catalogue = self.__session.ap_welcome().catalogue - except AttributeError: - catalogue = None - except Exception: # pragma: no cover - defensive guard if ap_welcome raises - catalogue = None - if catalogue: - header.catalogue = catalogue - - entity_request = request.entity_request.add() - entity_request.entity_uri = spotify_uri - query = entity_request.query.add() - query.extension_kind = extension_kind_pb2.ExtensionKind.AUDIO_FILES - - request_bytes = request.SerializeToString() - - def _decode_audio_files_extension( - payload: typing.Optional[typing.Union[bytes, bytearray, typing.Iterable[bytes]]] - ) -> typing.Optional[audio_files_extension_pb2.AudioFilesExtensionResponse]: - if not payload: - return None - - if isinstance(payload, (bytes, bytearray)): - payload_bytes = bytes(payload) - elif isinstance(payload, Iterable): # Mercury responses sometimes return payload parts - payload_bytes = b"".join(typing.cast(typing.Iterable[bytes], payload)) - else: - payload_bytes = bytes(payload) - - batch_response = extended_metadata_pb2.BatchedExtensionResponse() - try: - batch_response.ParseFromString(payload_bytes) - except _message.DecodeError: - self.logger.debug( - "Failed to parse extended metadata payload for %s", - spotify_uri, - exc_info=True, - ) - return None - - for extension_array in batch_response.extended_metadata: - if extension_array.extension_kind != extension_kind_pb2.ExtensionKind.AUDIO_FILES: - continue - for entity in extension_array.extension_data: - if entity.entity_uri and entity.entity_uri != spotify_uri: - continue - if not entity.HasField("extension_data"): - continue - - audio_response = audio_files_extension_pb2.AudioFilesExtensionResponse() - try: - entity.extension_data.Unpack(audio_response) - except (ValueError, _message.DecodeError): - try: - audio_response.ParseFromString(entity.extension_data.value) - except _message.DecodeError: - self.logger.debug( - "Failed to unpack audio files extension for %s", - spotify_uri, - exc_info=True, - ) - continue - return audio_response - - return None - - # Prefer the HTTPS extended metadata endpoint; fall back to Mercury if necessary. - login5_token = None - try: - login5_token = self.__session.get_login5_token() - except Exception: # pragma: no cover - defensive guard if session raises unexpectedly - login5_token = None - - bearer_token = login5_token - if not bearer_token: - try: - bearer_token = self.__session.tokens().get("playlist-read") - except Exception: - bearer_token = None - - headers = { - "Content-Type": "application/x-protobuf", - "Accept": "application/x-protobuf", - "Content-Length": str(len(request_bytes)), - } - if bearer_token: - headers["Authorization"] = f"Bearer {bearer_token}" - - preferred_locale = getattr(self.__session, "preferred_locale", None) - if callable(preferred_locale): # Session.preferred_locale() is a method - try: - locale_value = preferred_locale() - except Exception: - locale_value = None - else: - locale_value = preferred_locale - if isinstance(locale_value, str) and locale_value: - headers.setdefault("Accept-Language", locale_value) - - query_params: dict[str, str] = {"product": "0"} - if country_code: - query_params["country"] = country_code - query_params["salt"] = str(random.randint(0, 0xFFFFFFFF)) - - suffix = "/extended-metadata/v0/extended-metadata?" + urllib.parse.urlencode(query_params) - - def _http_post(url_override: typing.Optional[str]) -> typing.Optional[requests.Response]: - target_headers = headers.copy() - for attempt in range(2): - try: - if url_override is None: - response = self.send("POST", suffix, target_headers, request_bytes) - else: - response = self.sendToUrl("POST", url_override, suffix, target_headers, request_bytes) - except Exception as exc: # pragma: no cover - network errors handled gracefully - self.logger.debug( - "Extended metadata HTTP request failed for %s via %s: %s", - spotify_uri, - url_override or "AP host", - exc, - ) - return None - - if response is not None and response.status_code in (401, 403): - self.logger.debug( - "Extended metadata HTTP returned %s for %s; refreshing client token", - response.status_code, - spotify_uri, - ) - self.__client_token_str = None - target_headers.pop("client-token", None) - continue - - return response - - return None - - http_response = _http_post(None) - - if http_response is None or http_response.status_code != 200: - http_response = _http_post("https://spclient.wg.spotify.com") - - if http_response is not None: - if http_response.status_code == 200: - http_payload: typing.Optional[bytes] - if isinstance(http_response.content, (bytes, bytearray)): - http_payload = bytes(http_response.content) - else: - http_payload = None - http_extension = _decode_audio_files_extension(http_payload) - if http_extension is not None: - return http_extension - else: - self.logger.debug( - "Extended metadata HTTP returned status %s for %s", - http_response.status_code, - spotify_uri, - ) - - mercury_request = ( - RawMercuryRequest.new_builder() - .set_uri("hm://extendedmetadata/v1/entity") - .set_method("POST") - .set_content_type("application/x-protobuf") - .add_payload_part(request_bytes) - .build() - ) - - try: - response = self.__session.mercury().send_sync(mercury_request) - except Exception as exc: # pragma: no cover - network errors handled gracefully - self.logger.debug( - "Extended metadata request failed for %s: %s", - spotify_uri, - exc, - ) - return None - - if response.status_code != 200 or not response.payload: - self.logger.debug( - "Extended metadata returned status %s for %s", - response.status_code, - spotify_uri, - ) - return None - - return _decode_audio_files_extension(response.payload) - - def set_client_token(self, client_token): - """ - - :param client_token: - - """ - self.__client_token_str = client_token - - def __client_token(self): - proto_req = ClientToken.ClientTokenRequest( - request_type=ClientToken.ClientTokenRequestType. - REQUEST_CLIENT_DATA_REQUEST, - client_data=ClientToken.ClientDataRequest( - client_id=MercuryRequests.keymaster_client_id, - client_version=Version.version_name, - connectivity_sdk_data=Connectivity.ConnectivitySdkData( - device_id=self.__session.device_id(), - platform_specific_data=Connectivity.PlatformSpecificData( - windows=Connectivity.NativeWindowsData( - something1=10, - something3=21370, - something4=2, - something6=9, - something7=332, - something8=33404, - something10=True, - ), ), - ), - ), - ) - - resp = requests.post( - "https://clienttoken.spotify.com/v1/clienttoken", - proto_req.SerializeToString(), - headers={ - "Accept": "application/x-protobuf", - "Content-Encoding": "", - }, - ) - - ApiClient.StatusCodeException.check_status(resp) - - proto_resp = ClientToken.ClientTokenResponse() - proto_resp.ParseFromString(resp.content) - return proto_resp - - class StatusCodeException(IOError): - """ """ - code: int - - def __init__(self, response: requests.Response): - super().__init__(response.status_code) - self.code = response.status_code - - @staticmethod - def check_status(response: requests.Response) -> None: - """ - - :param response: requests.Response: - - """ - if response.status_code != 200: - raise ApiClient.StatusCodeException(response) - - -class ApResolver: - """ """ - base_url = "https://apresolve.spotify.com/" - - @staticmethod - def request(service_type: str) -> typing.Any: - """Gets the specified ApResolve - - :param service_type: str: - :returns: The resulting object will be returned - - """ - response = requests.get("{}?type={}".format(ApResolver.base_url, - service_type)) - if response.status_code != 200: - if response.status_code == 502: - raise RuntimeError( - f"ApResolve request failed with the following return value: {response.content}. Servers might be down!" - ) - return response.json() - - @staticmethod - def get_random_of(service_type: str) -> str: - """Gets the specified random ApResolve url - - :param service_type: str: - :returns: A random ApResolve url will be returned - - """ - pool = ApResolver.request(service_type) - urls = pool.get(service_type) - if urls is None or len(urls) == 0: - raise RuntimeError("No ApResolve url available") - return random.choice(urls) - - @staticmethod - def get_random_dealer() -> str: - """Get dealer endpoint url - - - :returns: dealer endpoint url - - """ - return ApResolver.get_random_of("dealer") - - @staticmethod - def get_random_spclient() -> str: - """Get spclient endpoint url - - - :returns: spclient endpoint url - - """ - return ApResolver.get_random_of("spclient") - - @staticmethod - def get_random_accesspoint() -> str: - """Get accesspoint endpoint url - - - :returns: accesspoint endpoint url - - """ - return ApResolver.get_random_of("accesspoint") - - -class DealerClient(Closeable): - """ """ - logger = logging.getLogger("Librespot:DealerClient") - __connection: typing.Union[ConnectionHolder, None] - __last_scheduled_reconnection: typing.Union[sched.Event, None] - __message_listeners: typing.Dict[MessageListener, typing.List[str]] = {} - __message_listeners_lock = threading.Condition() - __request_listeners: typing.Dict[str, RequestListener] = {} - __request_listeners_lock = threading.Condition() - __scheduler = sched.scheduler() - __session: Session - __worker = concurrent.futures.ThreadPoolExecutor() - - def __init__(self, session: Session): - self.__session = session - - def add_message_listener(self, listener: MessageListener, - uris: list[str]) -> None: - """ - - :param listener: MessageListener: - :param uris: list[str]: - - """ - with self.__message_listeners_lock: - if listener in self.__message_listeners: - raise TypeError( - "A listener for {} has already been added.".format(uris)) - self.__message_listeners[listener] = uris - self.__message_listeners_lock.notify_all() - - def add_request_listener(self, listener: RequestListener, uri: str): - """ - - :param listener: RequestListener: - :param uri: str: - - """ - with self.__request_listeners_lock: - if uri in self.__request_listeners: - raise TypeError( - "A listener for '{}' has already been added.".format(uri)) - self.__request_listeners[uri] = listener - self.__request_listeners_lock.notify_all() - - def close(self) -> None: - """ """ - self.__worker.shutdown() - - def connect(self) -> None: - """ """ - self.__connection = DealerClient.ConnectionHolder( - self.__session, - self, - "wss://{}/?access_token={}".format( - ApResolver.get_random_dealer(), - self.__session.tokens().get("playlist-read"), - ), - ) - - def connection_invalided(self) -> None: - """ """ - self.__connection = None - self.logger.debug("Scheduled reconnection attempt in 10 seconds...") - - def anonymous(): - """ """ - self.__last_scheduled_reconnection = None - self.connect() - - self.__last_scheduled_reconnection = self.__scheduler.enter( - 10, 1, anonymous) - - def handle_message(self, obj: typing.Any) -> None: - """ - - :param obj: typing.Any: - - """ - uri = obj.get("uri") - headers = self.__get_headers(obj) - payloads = obj.get("payloads") - decoded_payloads: typing.Any - if payloads is not None: - if headers.get("Content-Type") == "application/json": - decoded_payloads = payloads - elif headers.get("Content-Type") == "plain/text": - decoded_payloads = payloads - else: - decoded_payloads = base64.b64decode(payloads) - if headers.get("Transfer-Encoding") == "gzip": - decoded_payloads = gzip.decompress(decoded_payloads) - else: - decoded_payloads = b"" - interesting = False - with self.__message_listeners_lock: - for listener in self.__message_listeners: - dispatched = False - keys = self.__message_listeners.get(listener) - for key in keys: - if uri.startswith(key) and not dispatched: - interesting = True - - def anonymous(): - """ """ - listener.on_message(uri, headers, decoded_payloads) - - self.__worker.submit(anonymous) - dispatched = True - if not interesting: - self.logger.debug("Couldn't dispatch message: {}".format(uri)) - - def handle_request(self, obj: typing.Any) -> None: - """ - - :param obj: typing.Any: - - """ - mid = obj.get("message_ident") - key = obj.get("key") - headers = self.__get_headers(obj) - payload = obj.get("payload") - if headers.get("Transfer-Encoding") == "gzip": - gz = base64.b64decode(payload.get("compressed")) - payload = json.loads(gzip.decompress(gz)) - pid = payload.get("message_id") - sender = payload.get("sent_by_device_id") - command = payload.get("command") - self.logger.debug( - "Received request. [mid: {}, key: {}, pid: {}, sender: {}, command: {}]" - .format(mid, key, pid, sender, command)) - interesting = False - with self.__request_listeners_lock: - for mid_prefix in self.__request_listeners: - if mid.startswith(mid_prefix): - listener = self.__request_listeners.get(mid_prefix) - interesting = True - - def anonymous(): - """ """ - result = listener.on_request(mid, pid, sender, command) - if self.__connection is not None: - self.__connection.send_reply(key, result) - self.logger.warning( - "Handled request. [key: {}, result: {}]".format( - key, result)) - - self.__worker.submit(anonymous) - if not interesting: - self.logger.debug("Couldn't dispatch request: {}".format(mid)) - - def remove_message_listener(self, listener: MessageListener) -> None: - """ - - :param listener: MessageListener: - - """ - with self.__message_listeners_lock: - self.__message_listeners.pop(listener) - - def remove_request_listener(self, listener: RequestListener) -> None: - """ - - :param listener: RequestListener: - - """ - with self.__request_listeners_lock: - request_listeners = {} - for key, value in self.__request_listeners.items(): - if value != listener: - request_listeners[key] = value - self.__request_listeners = request_listeners - - def wait_for_listener(self) -> None: - """ """ - with self.__message_listeners_lock: - if self.__message_listeners == {}: - return - self.__message_listeners_lock.wait() - - def __get_headers(self, obj: typing.Any) -> dict[str, str]: - headers = obj.get("headers") - if headers is None: - return {} - return headers - - class ConnectionHolder(Closeable): - """ """ - __closed = False - __dealer_client: DealerClient - __last_scheduled_ping: sched.Event - __received_pong = False - __scheduler = sched.scheduler() - __session: Session - __url: str - __ws: websocket.WebSocketApp - - def __init__(self, session: Session, dealer_client: DealerClient, - url: str): - self.__session = session - self.__dealer_client = dealer_client - self.__url = url - self.__ws = websocket.WebSocketApp(url) - - def close(self): - """ """ - if not self.__closed: - self.__ws.close() - self.__closed = True - if self.__last_scheduled_ping is not None: - self.__scheduler.cancel(self.__last_scheduled_ping) - - def on_failure(self, ws: websocket.WebSocketApp, error): - """ - - :param ws: websocket.WebSocketApp: - :param error: - - """ - if self.__closed: - return - self.__dealer_client.logger.warning( - "An exception occurred. Reconnecting...") - self.close() - - def on_message(self, ws: websocket.WebSocketApp, text: str): - """ - - :param ws: websocket.WebSocketApp: - :param text: str: - - """ - obj = json.loads(text) - self.__dealer_client.wait_for_listener() - typ = MessageType.parse(obj.get("type")) - if typ == MessageType.MESSAGE: - self.__dealer_client.handle_message(obj) - elif typ == MessageType.REQUEST: - self.__dealer_client.handle_request(obj) - elif typ == MessageType.PONG: - self.__received_pong = True - elif typ == MessageType.PING: - pass - else: - raise RuntimeError("Unknown message type for {}".format( - typ.value)) - - def on_open(self, ws: websocket.WebSocketApp): - """ - - :param ws: websocket.WebSocketApp: - - """ - if self.__closed: - self.__dealer_client.logger.fatal( - "I wonder what happened here... Terminating. [closed: {}]". - format(self.__closed)) - self.__dealer_client.logger.debug( - "Dealer connected! [url: {}]".format(self.__url)) - - def anonymous(): - """ """ - self.send_ping() - self.__received_pong = False - - def anonymous2(): - """ """ - if self.__last_scheduled_ping is None: - return - if not self.__received_pong: - self.__dealer_client.logger.warning( - "Did not receive ping in 3 seconds. Reconnecting..." - ) - self.close() - return - self.__received_pong = False - - self.__scheduler.enter(3, 1, anonymous2) - self.__last_scheduled_ping = self.__scheduler.enter( - 30, 1, anonymous) - - self.__last_scheduled_ping = self.__scheduler.enter( - 30, 1, anonymous) - - def send_ping(self): - """ """ - self.__ws.send('{"type":"ping"}') - - def send_reply(self, key: str, result: DealerClient.RequestResult): - """ - - :param key: str: - :param result: DealerClient.RequestResult: - - """ - success = ("true" if result == DealerClient.RequestResult.SUCCESS - else "false") - self.__ws.send( - '{"type":"reply","key":"%s","payload":{"success":%s}' % - (key, success)) - - class RequestResult(enum.Enum): - """ """ - UNKNOWN_SEND_COMMAND_RESULT = 0 - SUCCESS = 1 - DEVICE_NOT_FOUND = 2 - CONTEXT_PLAYER_ERROR = 3 - DEVICE_DISAPPEARED = 4 - UPSTREAM_ERROR = 5 - DEVICE_DOES_NOT_SUPPORT_COMMAND = 6 - RATE_LIMITED = 7 - - -class EventService(Closeable): - """ """ - logger = logging.getLogger("Librespot:EventService") - __session: Session - __worker = concurrent.futures.ThreadPoolExecutor() - - def __init__(self, session: Session): - self.__session = session - - def __worker_callback(self, event_builder: EventBuilder): - try: - body = event_builder.to_array() - resp = self.__session.mercury().send_sync( - RawMercuryRequest.Builder().set_uri( - "hm://event-service/v1/events").set_method("POST"). - add_user_field("Accept-Language", "en").add_user_field( - "X-ClientTimeStamp", - int(time.time() * 1000)).add_payload_part(body).build()) - self.logger.debug("Event sent. body: {}, result: {}".format( - body, resp.status_code)) - except IOError as ex: - self.logger.error("Failed sending event: {} {}".format( - event_builder, ex)) - - def send_event(self, event_or_builder: typing.Union[GenericEvent, - EventBuilder]): - """ - - :param event_or_builder: typing.Union[GenericEvent: - :param EventBuilder]: - - """ - if type(event_or_builder) is EventService.GenericEvent: - builder = event_or_builder.build() - elif type(event_or_builder) is EventService.EventBuilder: - builder = event_or_builder - else: - raise TypeError() - self.__worker.submit(lambda: self.__worker_callback(builder)) - - def language(self, lang: str): - """ - - :param lang: str: - - """ - event = EventService.EventBuilder(EventService.Type.LANGUAGE) - event.append(s=lang) - - def close(self): - """ """ - self.__worker.shutdown() - - class Type(enum.Enum): - """ """ - LANGUAGE = ("812", 1) - FETCHED_FILE_ID = ("274", 3) - NEW_SESSION_ID = ("557", 3) - NEW_PLAYBACK_ID = ("558", 1) - TRACK_PLAYED = ("372", 1) - TRACK_TRANSITION = ("12", 37) - CDN_REQUEST = ("10", 20) - - eventId: str - unknown: str - - def __init__(self, event_id: str, unknown: str): - self.eventId = event_id - self.unknown = unknown - - class GenericEvent: - """ """ - - def build(self) -> EventService.EventBuilder: - """ """ - raise NotImplementedError - - class EventBuilder: - """ """ - body: io.BytesIO - - def __init__(self, event_type: EventService.Type): - self.body = io.BytesIO() - self.append_no_delimiter(event_type.value[0]) - self.append(event_type.value[1]) - - def append_no_delimiter(self, s: str = None) -> None: - """ - - :param s: str: (Default value = None) - - """ - if s is None: - s = "" - self.body.write(s.encode()) - - def append(self, - c: int = None, - s: str = None) -> EventService.EventBuilder: - """ - - :param c: int: (Default value = None) - :param s: str: (Default value = None) - - """ - if c is None and s is None or c is not None and s is not None: - raise TypeError() - if c is not None: - self.body.write(b"\x09") - self.body.write(bytes([c])) - return self - if s is not None: - self.body.write(b"\x09") - self.append_no_delimiter(s) - return self - - def to_array(self) -> bytes: - """ """ - pos = self.body.tell() - self.body.seek(0) - data = self.body.read() - self.body.seek(pos) - return data - - -class MessageType(enum.Enum): - """ """ - MESSAGE = "message" - PING = "ping" - PONG = "pong" - REQUEST = "request" - - @staticmethod - def parse(_typ: str): - """ - - :param _typ: str: - - """ - if _typ == MessageType.MESSAGE.value: - return MessageType.MESSAGE - if _typ == MessageType.PING.value: - return MessageType.PING - if _typ == MessageType.PONG.value: - return MessageType.PONG - if _typ == MessageType.REQUEST.value: - return MessageType.REQUEST - raise TypeError("Unknown MessageType: {}".format(_typ)) - - -class Session(Closeable, MessageListener, SubListener): - """ """ - cipher_pair: typing.Union[CipherPair, None] - country_code: str = "EN" - connection: typing.Union[ConnectionHolder, None] - logger = logging.getLogger("Librespot:Session") - scheduled_reconnect: typing.Union[sched.Event, None] = None - scheduler = sched.scheduler(time.time) - __api: ApiClient - __ap_welcome: Authentication.APWelcome - __audio_key_manager: typing.Union[AudioKeyManager, None] = None - __auth_lock = threading.Condition() - __auth_lock_bool = False - __cache_manager: typing.Union[CacheManager, None] - __cdn_manager: typing.Union[CdnManager, None] - __channel_manager: typing.Union[ChannelManager, None] = None - __client: typing.Union[requests.Session, None] - __closed = False - __closing = False - __content_feeder: typing.Union[PlayableContentFeeder, None] - __dealer_client: typing.Union[DealerClient, None] = None - __event_service: typing.Union[EventService, None] = None - __keys: DiffieHellman - __mercury_client: MercuryClient - __receiver: typing.Union[Receiver, None] = None - __search: typing.Union[SearchManager, None] - __server_key = (b"\xac\xe0F\x0b\xff\xc20\xaf\xf4k\xfe\xc3\xbf\xbf\x86=" - b"\xa1\x91\xc6\xcc3l\x93\xa1O\xb3\xb0\x16\x12\xac\xacj" - b"\xf1\x80\xe7\xf6\x14\xd9B\x9d\xbe.4fC\xe3b\xd22z\x1a" - b"\r\x92;\xae\xdd\x14\x02\xb1\x81U\x05a\x04\xd5,\x96\xa4" - b"L\x1e\xcc\x02J\xd4\xb2\x0c\x00\x1f\x17\xed\xc2/\xc45" - b"!\xc8\xf0\xcb\xae\xd2\xad\xd7+\x0f\x9d\xb3\xc52\x1a*" - b"\xfeY\xf3Z\r\xach\xf1\xfab\x1e\xfb,\x8d\x0c\xb79-\x92" - b"G\xe3\xd75\x1am\xbd$\xc2\xae%[\x88\xff\xabs)\x8a\x0b" - b"\xcc\xcd\x0cXg1\x89\xe8\xbd4\x80xJ_\xc9k\x89\x9d\x95k" - b"\xfc\x86\xd7O3\xa6x\x17\x96\xc9\xc3-\r2\xa5\xab\xcd\x05'" - b"\xe2\xf7\x10\xa3\x96\x13\xc4/\x99\xc0'\xbf\xed\x04\x9c" - b"<'X\x04\xb6\xb2\x19\xf9\xc1/\x02\xe9Hc\xec\xa1\xb6B\xa0" - b"\x9dH%\xf8\xb3\x9d\xd0\xe8j\xf9HM\xa1\xc2\xba\x860B\xea" - b"\x9d\xb3\x08l\x19\x0eH\xb3\x9df\xeb\x00\x06\xa2Z\xee\xa1" - b"\x1b\x13\x87<\xd7\x19\xe6U\xbd") - __stored_str: str = "" - __token_provider: typing.Union[TokenProvider, None] - __user_attributes = {} - __login5_access_token: typing.Union[str, None] = None - __login5_token_expiry: typing.Union[int, None] = None - - def __init__(self, inner: Inner, address: str) -> None: - self.__client = Session.create_client(inner.conf) - self.connection = Session.ConnectionHolder.create(address, None) - self.__inner = inner - self.__keys = DiffieHellman() - self.logger.info("Created new session! device_id: {}, ap: {}".format( - inner.device_id, address)) - - def api(self) -> ApiClient: - """ """ - self.__wait_auth_lock() - if self.__api is None: - raise RuntimeError("Session isn't authenticated!") - return self.__api - - def ap_welcome(self): - """ """ - self.__wait_auth_lock() - if self.__ap_welcome is None: - raise RuntimeError("Session isn't authenticated!") - return self.__ap_welcome - - def audio_key(self) -> AudioKeyManager: - """ """ - self.__wait_auth_lock() - if self.__audio_key_manager is None: - raise RuntimeError("Session isn't authenticated!") - return self.__audio_key_manager - - def authenticate(self, - credential: Authentication.LoginCredentials) -> None: - """Log in to Spotify - - :param credential: Spotify account login information - :param credential: Authentication.LoginCredentials: - - """ - self.__authenticate_partial(credential, False) - self.__authenticate_login5(credential) - with self.__auth_lock: - self.__mercury_client = MercuryClient(self) - self.__token_provider = TokenProvider(self) - self.__audio_key_manager = AudioKeyManager(self) - self.__channel_manager = ChannelManager(self) - self.__api = ApiClient(self) - self.__cdn_manager = CdnManager(self) - self.__content_feeder = PlayableContentFeeder(self) - self.__cache_manager = CacheManager(self) - self.__dealer_client = DealerClient(self) - self.__search = SearchManager(self) - self.__event_service = EventService(self) - self.__auth_lock_bool = False - self.__auth_lock.notify_all() - self.dealer().connect() - self.logger.info("Authenticated as {}!".format( - self.__ap_welcome.canonical_username)) - self.mercury().interested_in("spotify:user:attributes:update", self) - self.dealer().add_message_listener( - self, ["hm://connect-state/v1/connect/logout"]) - - def cache(self) -> CacheManager: - """ """ - self.__wait_auth_lock() - if self.__cache_manager is None: - raise RuntimeError("Session isn't authenticated!") - return self.__cache_manager - - def cdn(self) -> CdnManager: - """ """ - self.__wait_auth_lock() - if self.__cdn_manager is None: - raise RuntimeError("Session isn't authenticated!") - return self.__cdn_manager - - def channel(self) -> ChannelManager: - """ """ - self.__wait_auth_lock() - if self.__channel_manager is None: - raise RuntimeError("Session isn't authenticated!") - return self.__channel_manager - - def client(self) -> requests.Session: - """ """ - return self.__client - - def close(self) -> None: - """Close instance""" - self.logger.info("Closing session. device_id: {}".format( - self.__inner.device_id)) - self.__closing = True - if self.__dealer_client is not None: - self.__dealer_client.close() - self.__dealer_client = None - if self.__audio_key_manager is not None: - self.__audio_key_manager = None - if self.__channel_manager is not None: - self.__channel_manager.close() - self.__channel_manager = None - if self.__event_service is not None: - self.__event_service.close() - self.__event_service = None - if self.__receiver is not None: - self.__receiver.stop() - self.__receiver = None - if self.__client is not None: - self.__client.close() - self.__client = None - if self.connection is not None: - self.connection.close() - self.connection = None - with self.__auth_lock: - self.__ap_welcome = None - self.cipher_pair = None - self.__closed = True - self.logger.info("Closed session. device_id: {}".format( - self.__inner.device_id)) - - def connect(self) -> None: - """Connect to the Spotify Server""" - acc = Session.Accumulator() - # Send ClientHello - nonce = Random.get_random_bytes(0x10) - client_hello_proto = Keyexchange.ClientHello( - build_info=Version.standard_build_info(), - client_nonce=nonce, - cryptosuites_supported=[ - Keyexchange.Cryptosuite.CRYPTO_SUITE_SHANNON - ], - login_crypto_hello=Keyexchange.LoginCryptoHelloUnion( - diffie_hellman=Keyexchange.LoginCryptoDiffieHellmanHello( - gc=self.__keys.public_key_bytes(), server_keys_known=1), ), - padding=b"\x1e", - ) - client_hello_bytes = client_hello_proto.SerializeToString() - self.connection.write(b"\x00\x04") - self.connection.write_int(2 + 4 + len(client_hello_bytes)) - self.connection.write(client_hello_bytes) - self.connection.flush() - acc.write(b"\x00\x04") - acc.write_int(2 + 4 + len(client_hello_bytes)) - acc.write(client_hello_bytes) - # Read APResponseMessage - ap_response_message_length = self.connection.read_int() - acc.write_int(ap_response_message_length) - ap_response_message_bytes = self.connection.read( - ap_response_message_length - 4) - acc.write(ap_response_message_bytes) - ap_response_message_proto = Keyexchange.APResponseMessage() - ap_response_message_proto.ParseFromString(ap_response_message_bytes) - shared_key = util.int_to_bytes( - self.__keys.compute_shared_key( - ap_response_message_proto.challenge.login_crypto_challenge. - diffie_hellman.gs)) - # Check gs_signature - rsa = RSA.construct((int.from_bytes(self.__server_key, "big"), 65537)) - pkcs1_v1_5 = PKCS1_v1_5.new(rsa) - sha1 = SHA1.new() - sha1.update(ap_response_message_proto.challenge.login_crypto_challenge. - diffie_hellman.gs) - if not pkcs1_v1_5.verify( - sha1, - ap_response_message_proto.challenge.login_crypto_challenge. - diffie_hellman.gs_signature, - ): - raise RuntimeError("Failed signature check!") - # Solve challenge - buffer = io.BytesIO() - for i in range(1, 6): - mac = HMAC.new(shared_key, digestmod=SHA1) - mac.update(acc.read()) - mac.update(bytes([i])) - buffer.write(mac.digest()) - buffer.seek(0) - mac = HMAC.new(buffer.read(20), digestmod=SHA1) - mac.update(acc.read()) - challenge = mac.digest() - client_response_plaintext_proto = Keyexchange.ClientResponsePlaintext( - crypto_response=Keyexchange.CryptoResponseUnion(), - login_crypto_response=Keyexchange.LoginCryptoResponseUnion( - diffie_hellman=Keyexchange.LoginCryptoDiffieHellmanResponse( - hmac=challenge)), - pow_response=Keyexchange.PoWResponseUnion(), - ) - client_response_plaintext_bytes = ( - client_response_plaintext_proto.SerializeToString()) - self.connection.write_int(4 + len(client_response_plaintext_bytes)) - self.connection.write(client_response_plaintext_bytes) - self.connection.flush() - try: - self.connection.set_timeout(1) - scrap = self.connection.read(4) - if len(scrap) == 4: - payload = self.connection.read( - struct.unpack(">i", scrap)[0] - 4) - failed = Keyexchange.APResponseMessage() - failed.ParseFromString(payload) - raise RuntimeError(failed) - except socket.timeout: - pass - finally: - self.connection.set_timeout(0) - buffer.seek(20) - with self.__auth_lock: - self.cipher_pair = CipherPair(buffer.read(32), buffer.read(32)) - self.__auth_lock_bool = True - self.logger.info("Connection successfully!") - - def content_feeder(self) -> PlayableContentFeeder: - """ """ - self.__wait_auth_lock() - if self.__content_feeder is None: - raise RuntimeError("Session isn't authenticated!") - return self.__content_feeder - - @staticmethod - def create_client(conf: Configuration) -> requests.Session: - """ - - :param conf: Configuration: - - """ - client = requests.Session() - return client - - def dealer(self) -> DealerClient: - """ """ - self.__wait_auth_lock() - if self.__dealer_client is None: - raise RuntimeError("Session isn't authenticated!") - return self.__dealer_client - - def device_id(self) -> str: - """ """ - return self.__inner.device_id - - def device_name(self) -> str: - """ """ - return self.__inner.device_name - - def device_type(self) -> Connect.DeviceType: - """ """ - return self.__inner.device_type - - def event(self, resp: MercuryClient.Response) -> None: - """ - - :param resp: MercuryClient.Response: - - """ - if resp.uri == "spotify:user:attributes:update": - attributes_update = UserAttributesUpdate() - attributes_update.ParseFromString(resp.payload) - for pair in attributes_update.pairs_list: - self.__user_attributes[pair.key] = pair.value - self.logger.info("Updated user attribute: {} -> {}".format( - pair.key, pair.value)) - - def get_user_attribute(self, key: str, fallback: str = None) -> str: - """ - - :param key: str: - :param fallback: str: (Default value = None) - - """ - return (self.__user_attributes.get(key) - if self.__user_attributes.get(key) is not None else fallback) - - def is_valid(self) -> bool: - """ """ - if self.__closed: - return False - self.__wait_auth_lock() - return self.__ap_welcome is not None and self.connection is not None - - def mercury(self) -> MercuryClient: - """ """ - self.__wait_auth_lock() - if self.__mercury_client is None: - raise RuntimeError("Session isn't authenticated!") - return self.__mercury_client - - def on_message(self, uri: str, headers: typing.Dict[str, str], - payload: bytes): - """ - - :param uri: str: - :param headers: typing.Dict[str: - :param str]: - :param payload: bytes: - - """ - if uri == "hm://connect-state/v1/connect/logout": - self.close() - - def parse_product_info(self, data) -> None: - """Parse product information - - :param data: Raw product information - - """ - products = defusedxml.ElementTree.fromstring(data) - if products is None: - return - product = products[0] - if product is None: - return - for i in range(len(product)): - self.__user_attributes[product[i].tag] = product[i].text - self.logger.debug("Parsed product info: {}".format( - self.__user_attributes)) - - def preferred_locale(self) -> str: - """ """ - return self.__inner.preferred_locale - - def reconnect(self) -> None: - """Reconnect to the Spotify Server""" - if self.connection is not None: - self.connection.close() - self.__receiver.stop() - self.connection = Session.ConnectionHolder.create( - ApResolver.get_random_accesspoint(), self.__inner.conf) - self.connect() - self.__authenticate_partial( - Authentication.LoginCredentials( - typ=self.__ap_welcome.reusable_auth_credentials_type, - username=self.__ap_welcome.canonical_username, - auth_data=self.__ap_welcome.reusable_auth_credentials, - ), - True, - ) - self.logger.info("Re-authenticated as {}!".format( - self.__ap_welcome.canonical_username)) - - def reconnecting(self) -> bool: - """ """ - return not self.__closing and not self.__closed and self.connection is None - - def search(self) -> SearchManager: - """ """ - self.__wait_auth_lock() - if self.__search is None: - raise RuntimeError("Session isn't authenticated!") - return self.__search - - def send(self, cmd: bytes, payload: bytes): - """Send data to socket using send_unchecked - - :param cmd: Command - :param payload: Payload - :param cmd: bytes: - :param payload: bytes: - - """ - if self.__closing and self.connection is None: - self.logger.debug("Connection was broken while closing.") - return - if self.__closed: - raise RuntimeError("Session is closed!") - with self.__auth_lock: - if self.cipher_pair is None or self.__auth_lock_bool: - self.__auth_lock.wait() - self.__send_unchecked(cmd, payload) - - def tokens(self) -> TokenProvider: - """ """ - self.__wait_auth_lock() - if self.__token_provider is None: - raise RuntimeError("Session isn't authenticated!") - return self.__token_provider - - def username(self): - """ """ - return self.__ap_welcome.canonical_username - - def stored(self): - """ """ - return self.__stored_str - - def __authenticate_partial(self, - credential: Authentication.LoginCredentials, - remove_lock: bool) -> None: - """ - Login to Spotify - Args: - credential: Spotify account login information - """ - if self.cipher_pair is None: - raise RuntimeError("Connection not established!") - client_response_encrypted_proto = Authentication.ClientResponseEncrypted( - login_credentials=credential, - system_info=Authentication.SystemInfo( - os=Authentication.Os.OS_UNKNOWN, - cpu_family=Authentication.CpuFamily.CPU_UNKNOWN, - system_information_string=Version.system_info_string(), - device_id=self.__inner.device_id, - ), - version_string=Version.version_string(), - ) - self.__send_unchecked( - Packet.Type.login, - client_response_encrypted_proto.SerializeToString()) - packet = self.cipher_pair.receive_encoded(self.connection) - if packet.is_cmd(Packet.Type.ap_welcome): - self.__ap_welcome = Authentication.APWelcome() - self.__ap_welcome.ParseFromString(packet.payload) - self.__receiver = Session.Receiver(self) - bytes0x0f = Random.get_random_bytes(0x14) - self.__send_unchecked(Packet.Type.unknown_0x0f, bytes0x0f) - preferred_locale = io.BytesIO() - preferred_locale.write(b"\x00\x00\x10\x00\x02preferred-locale" + - self.__inner.preferred_locale.encode()) - preferred_locale.seek(0) - self.__send_unchecked(Packet.Type.preferred_locale, - preferred_locale.read()) - if remove_lock: - with self.__auth_lock: - self.__auth_lock_bool = False - self.__auth_lock.notify_all() - if self.__inner.conf.store_credentials: - reusable = self.__ap_welcome.reusable_auth_credentials - reusable_type = Authentication.AuthenticationType.Name( - self.__ap_welcome.reusable_auth_credentials_type) - if self.__inner.conf.stored_credentials_file is None: - raise TypeError( - "The file path to be saved is not specified") - self.__stored_str = base64.b64encode( - json.dumps({ - "username": - self.__ap_welcome.canonical_username, - "credentials": - base64.b64encode(reusable).decode(), - "type": - reusable_type, - }).encode()).decode() - with open(self.__inner.conf.stored_credentials_file, "w") as f: - json.dump( - { - "username": self.__ap_welcome.canonical_username, - "credentials": base64.b64encode(reusable).decode(), - "type": reusable_type, - }, - f, - ) - - elif packet.is_cmd(Packet.Type.auth_failure): - ap_login_failed = Keyexchange.APLoginFailed() - ap_login_failed.ParseFromString(packet.payload) - self.close() - raise Session.SpotifyAuthenticationException(ap_login_failed) - else: - raise RuntimeError("Unknown CMD 0x" + packet.cmd.hex()) - - def __send_unchecked(self, cmd: bytes, payload: bytes) -> None: - self.cipher_pair.send_encoded(self.connection, cmd, payload) - - def __authenticate_login5(self, credential: Authentication.LoginCredentials) -> None: - """Authenticate using Login5 to get access token""" - if not LOGIN5_AVAILABLE: - self.logger.warning("Login5 protobuf files not available, skipping Login5 authentication") - return - - try: - # Build Login5 request - login5_request = Login5.LoginRequest() - - # Set client info - login5_request.client_info.client_id = "65b708073fc0480ea92a077233ca87bd" - login5_request.client_info.device_id = self.__inner.device_id - - # Set stored credential from APWelcome - if hasattr(self, '_Session__ap_welcome') and self.__ap_welcome: - stored_cred = Login5Credentials.StoredCredential() - stored_cred.username = self.__ap_welcome.canonical_username - stored_cred.data = self.__ap_welcome.reusable_auth_credentials - login5_request.stored_credential.CopyFrom(stored_cred) - - # Send Login5 request - login5_url = "https://login5.spotify.com/v3/login" - headers = { - "Content-Type": "application/x-protobuf", - "Accept": "application/x-protobuf" - } - - response = requests.post( - login5_url, - data=login5_request.SerializeToString(), - headers=headers - ) - - if response.status_code == 200: - login5_response = Login5.LoginResponse() - login5_response.ParseFromString(response.content) - - if login5_response.HasField('ok'): - self.__login5_access_token = login5_response.ok.access_token - self.__login5_token_expiry = int(time.time()) + login5_response.ok.access_token_expires_in - self.logger.info("Login5 authentication successful, got access token") - else: - self.logger.warning("Login5 authentication failed: {}".format(login5_response.error)) - else: - self.logger.warning("Login5 request failed with status: {}".format(response.status_code)) - except Exception as e: - self.logger.warning("Failed to authenticate with Login5: {}".format(e)) - - def get_login5_token(self) -> typing.Union[str, None]: - """Get the Login5 access token if available and not expired""" - if self.__login5_access_token and self.__login5_token_expiry: - if int(time.time()) < self.__login5_token_expiry - 60: # 60 second buffer - return self.__login5_access_token - else: - self.logger.debug("Login5 token expired, need to re-authenticate") - return None - - def __wait_auth_lock(self) -> None: - if self.__closing and self.connection is None: - self.logger.debug("Connection was broken while closing.") - return - if self.__closed: - raise RuntimeError("Session is closed!") - with self.__auth_lock: - if self.cipher_pair is None or self.__auth_lock_bool: - self.__auth_lock.wait() - - class AbsBuilder: - """ """ - conf = None - device_id = None - device_name = "librespot-python" - device_type = Connect.DeviceType.COMPUTER - preferred_locale = "en" - - def __init__(self, conf: Session.Configuration = None): - if conf is None: - self.conf = Session.Configuration.Builder().build() - else: - self.conf = conf - - def set_preferred_locale(self, locale: str) -> Session.AbsBuilder: - """ - - :param locale: str: - - """ - if len(locale) != 2: - raise TypeError("Invalid locale: {}".format(locale)) - self.preferred_locale = locale - return self - - def set_device_name(self, device_name: str) -> Session.AbsBuilder: - """ - - :param device_name: str: - - """ - self.device_name = device_name - return self - - def set_device_id(self, device_id: str) -> Session.AbsBuilder: - """ - - :param device_id: str: - - """ - if self.device_id is not None and len(device_id) != 40: - raise TypeError("Device ID must be 40 chars long.") - self.device_id = device_id - return self - - def set_device_type( - self, device_type: Connect.DeviceType) -> Session.AbsBuilder: - """ - - :param device_type: Connect.DeviceType: - - """ - self.device_type = device_type - return self - - class Accumulator: - """ """ - __buffer: io.BytesIO - - def __init__(self): - self.__buffer = io.BytesIO() - - def read(self) -> bytes: - """Read all buffer - - - :returns: All buffer - - """ - pos = self.__buffer.tell() - self.__buffer.seek(0) - data = self.__buffer.read() - self.__buffer.seek(pos) - return data - - def write(self, data: bytes) -> None: - """Write data to buffer - - :param data: Bytes to be written - :param data: bytes: - - """ - self.__buffer.write(data) - - def write_int(self, data: int) -> None: - """Write data to buffer - - :param data: Integer to be written - :param data: int: - - """ - self.write(struct.pack(">i", data)) - - def write_short(self, data: int) -> None: - """Write data to buffer - - :param data: Short integer to be written - :param data: int: - - """ - self.write(struct.pack(">h", data)) - - class Builder(AbsBuilder): - """ """ - login_credentials: Authentication.LoginCredentials = None - - def blob(self, username: str, blob: bytes) -> Session.Builder: - """ - - :param username: str: - :param blob: bytes: - - """ - if self.device_id is None: - raise TypeError("You must specify the device ID first.") - self.login_credentials = self.decrypt_blob(self.device_id, - username, blob) - return self - - def decrypt_blob( - self, device_id: str, username: str, - encrypted_blob: bytes) -> Authentication.LoginCredentials: - """ - - :param device_id: str: - :param username: str: - :param encrypted_blob: bytes: - - """ - encrypted_blob = base64.b64decode(encrypted_blob) - sha1 = SHA1.new() - sha1.update(device_id.encode()) - secret = sha1.digest() - base_key = PBKDF2(secret, - username.encode(), - 20, - 0x100, - hmac_hash_module=SHA1) - sha1 = SHA1.new() - sha1.update(base_key) - key = sha1.digest() + b"\x00\x00\x00\x14" - aes = AES.new(key, AES.MODE_ECB) - decrypted_blob = bytearray(aes.decrypt(encrypted_blob)) - l = len(decrypted_blob) - for i in range(0, l - 0x10): - decrypted_blob[l - i - 1] ^= decrypted_blob[l - i - 0x11] - blob = io.BytesIO(decrypted_blob) - blob.read(1) - le = self.read_blob_int(blob) - blob.read(le) - blob.read(1) - type_int = self.read_blob_int(blob) - type_ = Authentication.AuthenticationType.Name(type_int) - if type_ is None: - raise IOError( - TypeError( - "Unknown AuthenticationType: {}".format(type_int))) - blob.read(1) - l = self.read_blob_int(blob) - auth_data = blob.read(l) - return Authentication.LoginCredentials( - auth_data=auth_data, - typ=type_, - username=username, - ) - - def read_blob_int(self, buffer: io.BytesIO) -> int: - """ - - :param buffer: io.BytesIO: - - """ - lo = buffer.read(1) - if (int(lo[0]) & 0x80) == 0: - return int(lo[0]) - hi = buffer.read(1) - return int(lo[0]) & 0x7F | int(hi[0]) << 7 - - def stored(self, stored_credentials_str: str): - """Create credential from stored string - - :param stored_credentials_str: str: - :returns: Builder - - """ - try: - obj = json.loads(base64.b64decode(stored_credentials_str)) - except binascii.Error: - pass - except json.JSONDecodeError: - pass - else: - try: - self.login_credentials = Authentication.LoginCredentials( - typ=Authentication.AuthenticationType.Value( - obj["type"]), - username=obj["username"], - auth_data=base64.b64decode(obj["credentials"]), - ) - except KeyError: - pass - return self - - def stored_file(self, - stored_credentials: str = None) -> Session.Builder: - """Create credential from stored file - - :param stored_credentials: str: (Default value = None) - :returns: Builder - - """ - if stored_credentials is None: - stored_credentials = self.conf.stored_credentials_file - if os.path.isfile(stored_credentials): - try: - with open(stored_credentials) as f: - obj = json.load(f) - except json.JSONDecodeError: - pass - else: - try: - self.login_credentials = Authentication.LoginCredentials( - typ=Authentication.AuthenticationType.Value( - obj["type"]), - username=obj["username"], - auth_data=base64.b64decode(obj["credentials"]), - ) - except KeyError: - pass - return self - - def user_pass(self, username: str, password: str) -> Session.Builder: - """Create credential from username and password - - :param username: Spotify's account username - :param username: str: - :param password: str: - :returns: Builder - - """ - self.login_credentials = Authentication.LoginCredentials( - username=username, - typ=Authentication.AuthenticationType.AUTHENTICATION_USER_PASS, - auth_data=password.encode(), - ) - return self - - def create(self) -> Session: - """Create the Session instance - - - :returns: Session instance - - """ - if self.login_credentials is None: - raise RuntimeError("You must select an authentication method.") - session = Session( - Session.Inner( - self.device_type, - self.device_name, - self.preferred_locale, - self.conf, - self.device_id, - ), - ApResolver.get_random_accesspoint(), - ) - session.connect() - session.authenticate(self.login_credentials) - return session - - class Configuration: - """ """ - # Proxy - # proxyEnabled: bool - # proxyType: Proxy.Type - # proxyAddress: str - # proxyPort: int - # proxyAuth: bool - # proxyUsername: str - # proxyPassword: str - - # Cache - cache_enabled: bool - cache_dir: str - do_cache_clean_up: bool - - # Stored credentials - store_credentials: bool - stored_credentials_file: str - - # Fetching - retry_on_chunk_error: bool - - def __init__( - self, - # proxy_enabled: bool, - # proxy_type: Proxy.Type, - # proxy_address: str, - # proxy_port: int, - # proxy_auth: bool, - # proxy_username: str, - # proxy_password: str, - cache_enabled: bool, - cache_dir: str, - do_cache_clean_up: bool, - store_credentials: bool, - stored_credentials_file: str, - retry_on_chunk_error: bool, - ): - # self.proxyEnabled = proxy_enabled - # self.proxyType = proxy_type - # self.proxyAddress = proxy_address - # self.proxyPort = proxy_port - # self.proxyAuth = proxy_auth - # self.proxyUsername = proxy_username - # self.proxyPassword = proxy_password - self.cache_enabled = cache_enabled - self.cache_dir = cache_dir - self.do_cache_clean_up = do_cache_clean_up - self.store_credentials = store_credentials - self.stored_credentials_file = stored_credentials_file - self.retry_on_chunk_error = retry_on_chunk_error - - class Builder: - """ """ - # Proxy - # proxyEnabled: bool = False - # proxyType: Proxy.Type = Proxy.Type.DIRECT - # proxyAddress: str = None - # proxyPort: int = None - # proxyAuth: bool = None - # proxyUsername: str = None - # proxyPassword: str = None - - # Cache - cache_enabled: bool = True - cache_dir: str = os.path.join(os.getcwd(), "cache") - do_cache_clean_up: bool = True - - # Stored credentials - store_credentials: bool = True - stored_credentials_file: str = os.path.join( - os.getcwd(), "credentials.json") - - # Fetching - retry_on_chunk_error: bool = True - - # def set_proxy_enabled( - # self, - # proxy_enabled: bool) -> Session.Configuration.Builder: - # self.proxyEnabled = proxy_enabled - # return self - - # def set_proxy_type( - # self, - # proxy_type: Proxy.Type) -> Session.Configuration.Builder: - # self.proxyType = proxy_type - # return self - - # def set_proxy_address( - # self, proxy_address: str) -> Session.Configuration.Builder: - # self.proxyAddress = proxy_address - # return self - - # def set_proxy_auth( - # self, proxy_auth: bool) -> Session.Configuration.Builder: - # self.proxyAuth = proxy_auth - # return self - - # def set_proxy_username( - # self, - # proxy_username: str) -> Session.Configuration.Builder: - # self.proxyUsername = proxy_username - # return self - - # def set_proxy_password( - # self, - # proxy_password: str) -> Session.Configuration.Builder: - # self.proxyPassword = proxy_password - # return self - - def set_cache_enabled( - self, - cache_enabled: bool) -> Session.Configuration.Builder: - """Set cache_enabled - - :param cache_enabled: bool: - :returns: Builder - - """ - self.cache_enabled = cache_enabled - return self - - def set_cache_dir(self, - cache_dir: str) -> Session.Configuration.Builder: - """Set cache_dir - - :param cache_dir: str: - :returns: Builder - - """ - self.cache_dir = cache_dir - return self - - def set_do_cache_clean_up( - self, - do_cache_clean_up: bool) -> Session.Configuration.Builder: - """Set do_cache_clean_up - - :param do_cache_clean_up: bool: - :returns: Builder - - """ - self.do_cache_clean_up = do_cache_clean_up - return self - - def set_store_credentials( - self, - store_credentials: bool) -> Session.Configuration.Builder: - """Set store_credentials - - :param store_credentials: bool: - :returns: Builder - - """ - self.store_credentials = store_credentials - return self - - def set_stored_credential_file( - self, stored_credential_file: str - ) -> Session.Configuration.Builder: - """Set stored_credential_file - - :param stored_credential_file: str: - :returns: Builder - - """ - self.stored_credentials_file = stored_credential_file - return self - - def set_retry_on_chunk_error( - self, retry_on_chunk_error: bool - ) -> Session.Configuration.Builder: - """Set retry_on_chunk_error - - :param retry_on_chunk_error: bool: - :returns: Builder - - """ - self.retry_on_chunk_error = retry_on_chunk_error - return self - - def build(self) -> Session.Configuration: - """Build Configuration instance - - - :returns: Session.Configuration - - """ - return Session.Configuration( - # self.proxyEnabled, - # self.proxyType, - # self.proxyAddress, - # self.proxyPort, - # self.proxyAuth, - # self.proxyUsername, - # self.proxyPassword, - self.cache_enabled, - self.cache_dir, - self.do_cache_clean_up, - self.store_credentials, - self.stored_credentials_file, - self.retry_on_chunk_error, - ) - - class ConnectionHolder: - """ """ - __buffer: io.BytesIO - __socket: socket.socket - - def __init__(self, sock: socket.socket): - self.__buffer = io.BytesIO() - self.__socket = sock - - @staticmethod - def create(address: str, conf) -> Session.ConnectionHolder: - """Create the ConnectionHolder instance - - :param address: Address to connect - :param address: str: - :param conf: - :returns: ConnectionHolder instance - - """ - ap_address = address.split(":")[0] - ap_port = int(address.split(":")[1]) - sock = socket.socket() - - # Retry logic: try up to 3 times with 2 seconds between attempts - # for transient connection errors (e.g., ECONNREFUSED / error 111). - attempts = 0 - last_err: typing.Optional[Exception] = None - while attempts < 3: - attempts += 1 - try: - sock.connect((ap_address, ap_port)) - break - except OSError as exc: - last_err = exc - # Connection refused / temporary failure - if attempts >= 3: - raise - time.sleep(2) - - return Session.ConnectionHolder(sock) - - def close(self) -> None: - """Close the connection""" - self.__socket.close() - - def flush(self) -> None: - """Flush data to socket""" - try: - self.__buffer.seek(0) - self.__socket.send(self.__buffer.read()) - self.__buffer = io.BytesIO() - except BrokenPipeError: - pass - - def read(self, length: int) -> bytes: - """Read data from socket - - :param length: int: - :returns: Bytes data from socket - - """ - return self.__socket.recv(length) - - def read_int(self) -> int: - """Read integer from socket - - - :returns: integer from socket - - """ - return struct.unpack(">i", self.read(4))[0] - - def read_short(self) -> int: - """Read short integer from socket - - - :returns: short integer from socket - - """ - return struct.unpack(">h", self.read(2))[0] - - def set_timeout(self, seconds: float) -> None: - """Set socket's timeout - - :param seconds: Number of seconds until timeout - :param seconds: float: - - """ - self.__socket.settimeout(None if seconds == 0 else seconds) - - def write(self, data: bytes) -> None: - """Write data to buffer - - :param data: Bytes to be written - :param data: bytes: - - """ - self.__buffer.write(data) - - def write_int(self, data: int) -> None: - """Write data to buffer - - :param data: Integer to be written - :param data: int: - - """ - self.write(struct.pack(">i", data)) - - def write_short(self, data: int) -> None: - """Write data to buffer - - :param data: Short integer to be written - :param data: int: - - """ - self.write(struct.pack(">h", data)) - - class Inner: - """ """ - device_type: Connect.DeviceType = None - device_name: str - device_id: str - conf = None - preferred_locale: str - - def __init__( - self, - device_type: Connect.DeviceType, - device_name: str, - preferred_locale: str, - conf: Session.Configuration, - device_id: str = None, - ): - self.preferred_locale = preferred_locale - self.conf = conf - self.device_type = device_type - self.device_name = device_name - self.device_id = (device_id if device_id is not None else - util.random_hex_string(40)) - - class Receiver: - """ """ - __session: Session - __thread: threading.Thread - __running: bool = True - - def __init__(self, session): - self.__session = session - self.__thread = threading.Thread(target=self.run) - self.__thread.daemon = True - self.__thread.name = "session-packet-receiver" - self.__thread.start() - - def stop(self) -> None: - """Signal the receiver thread to stop and wait for it. - - This ensures that the background thread exits cleanly before - the underlying socket/connection is closed, avoiding - "Bad file descriptor" errors from pending recv() calls. - """ - self.__running = False - try: - # Joining from within the same thread would deadlock, so - # guard against that. - if threading.current_thread() is not self.__thread: - self.__thread.join(timeout=0.5) - except Exception: - # Shutdown should be best-effort; if join fails, we - # still proceed with closing the session. - self.__session.logger.debug( - "Receiver.stop: failed to join receiver thread", exc_info=True - ) - - def run(self) -> None: - """Receive Packet thread function""" - self.__session.logger.info("Session.Receiver started") - # If the session has been explicitly closed elsewhere, do not - # start the receive loop at all; this prevents infinite - # reconnect cycles when the caller is done. - if not self.__running: - return - - # Track how many times in a row we have seen a connection - # reset (Errno 104). After a small number of consecutive - # occurrences, stop trying to reconnect to avoid an - # infinite loop when the remote side keeps closing. - consecutive_resets = 0 - max_consecutive_resets = 3 - - while self.__running: - packet: Packet - cmd: bytes - try: - packet = self.__session.cipher_pair.receive_encoded( - self.__session.connection) - cmd = Packet.Type.parse(packet.cmd) - if cmd is None: - self.__session.logger.info( - "Skipping unknown command cmd: 0x{}, payload: {}". - format(util.bytes_to_hex(packet.cmd), - packet.payload)) - continue - except (RuntimeError, ConnectionResetError, OSError) as ex: - # If we've been asked to stop, just exit quietly without - # trying to reconnect. This avoids the situation where the - # session keeps reconnecting in a loop after the work is - # finished and the caller expects shutdown. - if not self.__running: - #self.__session.logger.info( - # "Receiver stopping after connection error: %s", ex - #) - break - - # Detect repeated "connection reset by peer" errors. - is_reset = isinstance(ex, ConnectionResetError) or ( - isinstance(ex, OSError) - and getattr(ex, "errno", None) == 104 - ) - - # If the underlying socket is already closed (e.g. - # Bad file descriptor), just stop quietly; this can - # happen when Session.close() has torn down the - # connection while the receiver was blocked in recv(). - if isinstance(ex, OSError) and getattr(ex, "errno", None) == 9: - self.__session.logger.info( - "Receiver stopping after socket close (errno 9)" - ) - self.__running = False - break - if is_reset: - consecutive_resets += 1 - self.__session.logger.fatal( - "Failed reading packet (reset #%d)! %s", - consecutive_resets, - ex, - ) - if consecutive_resets >= max_consecutive_resets: - self.__session.logger.error( - "Too many consecutive connection resets (%d). " - "Stopping receiver without further reconnect attempts.", - consecutive_resets, - ) - # Mark as not running so the outer loop and - # any future reconnect logic will see that the - # session should shut down. - self.__running = False - break - else: - consecutive_resets = 0 - self.__session.logger.fatal( - "Failed reading packet! %s", ex - ) - - # For both reset and non-reset errors (unless we've - # exceeded the reset threshold), attempt a single - # reconnect. - if self.__running: - self.__session.reconnect() - break - if not self.__running: - break - if cmd == Packet.Type.ping: - if self.__session.scheduled_reconnect is not None: - self.__session.scheduler.cancel( - self.__session.scheduled_reconnect) - - def anonymous(): - """ """ - self.__session.logger.warning( - "Socket timed out. Reconnecting...") - self.__session.reconnect() - - self.__session.scheduled_reconnect = self.__session.scheduler.enter( - 2 * 60 + 5, 1, anonymous) - self.__session.send(Packet.Type.pong, packet.payload) - elif cmd == Packet.Type.pong_ack: - continue - elif cmd == Packet.Type.country_code: - self.__session.__country_code = packet.payload.decode() - self.__session.logger.info( - "Received country_code: {}".format( - self.__session.__country_code)) - elif cmd == Packet.Type.license_version: - license_version = io.BytesIO(packet.payload) - license_id = struct.unpack(">h", - license_version.read(2))[0] - if license_id != 0: - buffer = license_version.read() - self.__session.logger.info( - "Received license_version: {}, {}".format( - license_id, buffer.decode())) - else: - self.__session.logger.info( - "Received license_version: {}".format(license_id)) - elif cmd == Packet.Type.unknown_0x10: - self.__session.logger.debug("Received 0x10: {}".format( - util.bytes_to_hex(packet.payload))) - elif cmd in [ - Packet.Type.mercury_sub, - Packet.Type.mercury_unsub, - Packet.Type.mercury_event, - Packet.Type.mercury_req, - ]: - self.__session.mercury().dispatch(packet) - elif cmd in [Packet.Type.aes_key, Packet.Type.aes_key_error]: - self.__session.audio_key().dispatch(packet) - elif cmd in [ - Packet.Type.channel_error, Packet.Type.stream_chunk_res - ]: - self.__session.channel().dispatch(packet) - elif cmd == Packet.Type.product_info: - self.__session.parse_product_info(packet.payload) - else: - self.__session.logger.info("Skipping {}".format( - util.bytes_to_hex(cmd))) - - class SpotifyAuthenticationException(Exception): - """ """ - - def __init__(self, login_failed: Keyexchange.APLoginFailed): - super().__init__( - Keyexchange.ErrorCode.Name(login_failed.error_code)) - - -class SearchManager: - """ """ - base_url = "hm://searchview/km/v4/search/" - __session: Session - - def __init__(self, session: Session): - self.__session = session - - def request(self, request: SearchRequest) -> typing.Any: - """ - - :param request: SearchRequest: - - """ - if request.get_username() == "": - request.set_username(self.__session.username()) - if request.get_country() == "": - request.set_country(self.__session.country_code) - if request.get_locale() == "": - request.set_locale(self.__session.preferred_locale()) - response = self.__session.mercury().send_sync( - RawMercuryRequest.new_builder().set_method("GET").set_uri( - request.build_url()).build()) - if response.status_code != 200: - raise SearchManager.SearchException(response.status_code) - return json.loads(response.payload) - - class SearchException(Exception): - """ """ - - def __init__(self, status_code: int): - super().__init__("Search failed with code {}.".format(status_code)) - - class SearchRequest: - """ """ - query: typing.Final[str] - __catalogue = "" - __country = "" - __image_size = "" - __limit = 10 - __locale = "" - __username = "" - - def __init__(self, query: str): - self.query = query - if query == "": - raise TypeError - - def build_url(self) -> str: - """ """ - url = SearchManager.base_url + urllib.parse.quote(self.query) - url += "?entityVersion=2" - url += "&catalogue=" + urllib.parse.quote(self.__catalogue) - url += "&country=" + urllib.parse.quote(self.__country) - url += "&imageSize=" + urllib.parse.quote(self.__image_size) - url += "&limit=" + str(self.__limit) - url += "&locale=" + urllib.parse.quote(self.__locale) - url += "&username=" + urllib.parse.quote(self.__username) - return url - - def get_catalogue(self) -> str: - """ """ - return self.__catalogue - - def get_country(self) -> str: - """ """ - return self.__country - - def get_image_size(self) -> str: - """ """ - return self.__image_size - - def get_limit(self) -> int: - """ """ - return self.__limit - - def get_locale(self) -> str: - """ """ - return self.__locale - - def get_username(self) -> str: - """ """ - return self.__username - - def set_catalogue(self, catalogue: str) -> SearchManager.SearchRequest: - """ - - :param catalogue: str: - - """ - self.__catalogue = catalogue - return self - - def set_country(self, country: str) -> SearchManager.SearchRequest: - """ - - :param country: str: - - """ - self.__country = country - return self - - def set_image_size(self, - image_size: str) -> SearchManager.SearchRequest: - """ - - :param image_size: str: - - """ - self.__image_size = image_size - return self - - def set_limit(self, limit: int) -> SearchManager.SearchRequest: - """ - - :param limit: int: - - """ - self.__limit = limit - return self - - def set_locale(self, locale: str) -> SearchManager.SearchRequest: - """ - - :param locale: str: - - """ - self.__locale = locale - return self - - def set_username(self, username: str) -> SearchManager.SearchRequest: - """ - - :param username: str: - - """ - self.__username = username - return self - - -class TokenProvider: - """ """ - logger = logging.getLogger("Librespot:TokenProvider") - token_expire_threshold = 10 - __session: Session - __tokens: typing.List[StoredToken] = [] - - def __init__(self, session: Session): - self._session = session - - def find_token_with_all_scopes( - self, scopes: typing.List[str]) -> typing.Union[StoredToken, None]: - """ - - :param scopes: typing.List[str]: - - """ - for token in self.__tokens: - if token.has_scopes(scopes): - return token - return None - - def get(self, scope: str) -> str: - """ - - :param scope: str: - - """ - return self.get_token(scope).access_token - - def get_token(self, *scopes) -> StoredToken: - """ - - :param *scopes: - - """ - scopes = list(scopes) - if len(scopes) == 0: - raise RuntimeError("The token doesn't have any scope") - - login5_token = self._session.get_login5_token() - if login5_token: - # Create a StoredToken-compatible object using Login5 token - login5_stored_token = TokenProvider.Login5StoredToken(login5_token, scopes) - self.logger.debug("Using Login5 access token for scopes: {}".format(scopes)) - return login5_stored_token - - token = self.find_token_with_all_scopes(scopes) - if token is not None: - if token.expired(): - self.__tokens.remove(token) - else: - return token - self.logger.debug( - "Token expired or not suitable, requesting again. scopes: {}, old_token: {}" - .format(scopes, token)) - - try: - response = self._session.mercury().send_sync_json( - MercuryRequests.request_token(self._session.device_id(), - ",".join(scopes))) - token = TokenProvider.StoredToken(response) - self.logger.debug( - "Updated token successfully! scopes: {}, new_token: {}".format( - scopes, token)) - self.__tokens.append(token) - return token - except Exception as e: - self.logger.warning("Failed to get token from keymaster endpoint: {}".format(e)) - raise RuntimeError("Unable to obtain access token") - - class Login5StoredToken: - """StoredToken-compatible wrapper for Login5 access tokens""" - access_token: str - scopes: typing.List[str] - - def __init__(self, access_token: str, scopes: typing.List[str]): - self.access_token = access_token - self.scopes = scopes - - def expired(self) -> bool: - """Login5 tokens are managed by Session, so delegate expiry check""" - return False # Session handles expiry - - def has_scope(self, scope: str) -> bool: - """Login5 tokens are general-purpose, assume they have all scopes""" - return True - - def has_scopes(self, sc: typing.List[str]) -> bool: - """Login5 tokens are general-purpose, assume they have all scopes""" - return True - - class StoredToken: - """ """ - expires_in: int - access_token: str - scopes: typing.List[str] - timestamp: int - - def __init__(self, obj): - self.timestamp = int(time.time_ns() / 1000) - self.expires_in = obj["expiresIn"] - self.access_token = obj["accessToken"] - self.scopes = obj["scope"] - - def expired(self) -> bool: - """ """ - return self.timestamp + (self.expires_in - TokenProvider. - token_expire_threshold) * 1000 * 1000 < int( - time.time_ns() / 1000) - - def has_scope(self, scope: str) -> bool: - """ - - :param scope: str: - - """ - for s in self.scopes: - if s == scope: - return True - return False - - def has_scopes(self, sc: typing.List[str]) -> bool: - """ - - :param sc: typing.List[str]: - - """ - for s in sc: - if not self.has_scope(s): - return False - return True diff --git a/librespot/crypto.py b/librespot/crypto.py deleted file mode 100644 index 6ae8c23..0000000 --- a/librespot/crypto.py +++ /dev/null @@ -1,412 +0,0 @@ -from __future__ import annotations -from Cryptodome import Random -from librespot import util -import io -import re -import struct -import typing - -if typing.TYPE_CHECKING: - from librespot.core import Session - - -class CipherPair: - __receive_cipher: Shannon - __receive_nonce = 0 - __send_cipher: Shannon - __send_nonce = 0 - - def __init__(self, send_key: bytes, receive_key: bytes): - self.__send_cipher = Shannon() - self.__send_cipher.key(send_key) - self.__receive_cipher = Shannon() - self.__receive_cipher.key(receive_key) - - def send_encoded(self, connection: Session.ConnectionHolder, cmd: bytes, - payload: bytes) -> None: - """ - Send decrypted data to the socket - :param connection: - :param cmd: - :param payload: - :return: - """ - self.__send_cipher.nonce(self.__send_nonce) - self.__send_nonce += 1 - buffer = io.BytesIO() - buffer.write(cmd) - buffer.write(struct.pack(">H", len(payload))) - buffer.write(payload) - buffer.seek(0) - contents = self.__send_cipher.encrypt(buffer.read()) - mac = self.__send_cipher.finish(4) - connection.write(contents) - connection.write(mac) - connection.flush() - - def receive_encoded(self, connection: Session.ConnectionHolder) -> Packet: - """ - Receive and parse decrypted data from the socket - Args: - connection: ConnectionHolder - Return: - The parsed packet will be returned - """ - try: - self.__receive_cipher.nonce(self.__receive_nonce) - self.__receive_nonce += 1 - header_bytes = self.__receive_cipher.decrypt(connection.read(3)) - cmd = struct.pack(">s", bytes([header_bytes[0]])) - payload_length = (header_bytes[1] << 8) | (header_bytes[2] & 0xff) - payload_bytes = self.__receive_cipher.decrypt( - connection.read(payload_length)) - mac = connection.read(4) - expected_mac = self.__receive_cipher.finish(4) - if mac != expected_mac: - raise RuntimeError() - return Packet(cmd, payload_bytes) - except IndexError: - raise RuntimeError("Failed to receive packet") - - -class DiffieHellman: - """ - DiffieHellman Keyexchange - """ - __prime = int.from_bytes( - b'\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x0f' - b'\xda\xa2!h\xc24\xc4\xc6b\x8b\x80\xdc\x1c' - b'\xd1)\x02N\x08\x8ag\xcct\x02\x0b\xbe\xa6;' - b'\x13\x9b"QJ\x08y\x8e4\x04\xdd\xef\x95\x19' - b'\xb3\xcd:C\x1b0+\nm\xf2_\x147O\xe15mmQ\xc2' - b'E\xe4\x85\xb5vb^~\xc6\xf4LB\xe9\xa6:6 \xff' - b'\xff\xff\xff\xff\xff\xff\xff', - byteorder="big") - __private_key: int - __public_key: int - - def __init__(self): - key_data = Random.get_random_bytes(0x5f) - self.__private_key = int.from_bytes(key_data, byteorder="big") - self.__public_key = pow(2, self.__private_key, self.__prime) - - def compute_shared_key(self, remote_key_bytes: bytes): - """ - Compute shared_key - """ - remote_key = int.from_bytes(remote_key_bytes, "big") - return pow(remote_key, self.__private_key, self.__prime) - - def private_key(self) -> int: - """ - Return DiffieHellman's private key - Returns: - DiffieHellman's private key - """ - return self.__private_key - - def public_key(self) -> int: - """ - Return DiffieHellman's public key - Returns: - DiffieHellman's public key - """ - return self.__public_key - - def public_key_bytes(self) -> bytes: - """ - Return DiffieHellman's packed public key - Returns: - DiffieHellman's packed public key - """ - return util.int_to_bytes(self.__public_key) - - -class Packet: - cmd: bytes - payload: bytes - - def __init__(self, cmd: bytes, payload: bytes): - self.cmd = cmd - self.payload = payload - - def is_cmd(self, cmd: bytes) -> bool: - return cmd == self.cmd - - class Type: - secret_block = b"\x02" - ping = b"\x04" - stream_chunk = b"\x08" - stream_chunk_res = b"\x09" - channel_error = b"\x0a" - channel_abort = b"\x0b" - request_key = b"\x0c" - aes_key = b"\x0d" - aes_key_error = b"\x0e" - image = b"\x19" - country_code = b"\x1b" - pong = b"\x49" - pong_ack = b"\x4a" - pause = b"\x4b" - product_info = b"\x50" - legacy_welcome = b"\x69" - license_version = b"\x76" - login = b"\xab" - ap_welcome = b"\xac" - auth_failure = b"\xad" - mercury_req = b"\xb2" - mercury_sub = b"\xb3" - mercury_unsub = b"\xb4" - mercury_event = b"\xb5" - track_ended_time = b"\x82" - unknown_data_all_zeros = b"\x1f" - preferred_locale = b"\x74" - unknown_0x4f = b"\x4f" - unknown_0x0f = b"\x0f" - unknown_0x10 = b"\x10" - - @staticmethod - def parse(val: typing.Union[bytes, None]) -> typing.Union[bytes, None]: - for cmd in [ - Packet.Type.__dict__[attr] for attr in Packet.Type.__dict__ - if re.search("__.+?__", attr) is None - and type(Packet.Type.__dict__[attr]) is bytes - ]: - if cmd == val: - return cmd - return None - - @staticmethod - def for_method(method: str) -> bytes: - if method == "SUB": - return Packet.Type.mercury_sub - if method == "UNSUB": - return Packet.Type.mercury_unsub - return Packet.Type.mercury_req - - -class Shannon: - n = 16 - fold = n - initkonst = 0x6996c53a - keyp = 13 - r: list - crc: list - init_r: list - konst: int - sbuf: int - mbuf: int - nbuf: int - - def __init__(self): - self.r = [0 for _ in range(self.n)] - self.crc = [0 for _ in range(self.n)] - self.init_r = [0 for _ in range(self.n)] - - def rotl(self, i: int, distance: int) -> int: - return ((i << distance) | (i >> (32 - distance))) & 0xffffffff - - def sbox(self, i: int) -> int: - i ^= self.rotl(i, 5) | self.rotl(i, 7) - i ^= self.rotl(i, 19) | self.rotl(i, 22) - return i - - def sbox2(self, i: int) -> int: - i ^= self.rotl(i, 7) | self.rotl(i, 22) - i ^= self.rotl(i, 5) | self.rotl(i, 19) - return i - - def cycle(self) -> None: - t: int - t = self.r[12] ^ self.r[13] ^ self.konst - t = self.sbox(t) ^ self.rotl(self.r[0], 1) - for i in range(1, self.n): - self.r[i - 1] = self.r[i] - self.r[self.n - 1] = t - t = self.sbox2(self.r[2] ^ self.r[15]) - self.r[0] ^= t - self.sbuf = t ^ self.r[8] ^ self.r[12] - - def crc_func(self, i: int) -> None: - t: int - t = self.crc[0] ^ self.crc[2] ^ self.crc[15] ^ i - for j in range(1, self.n): - self.crc[j - 1] = self.crc[j] - self.crc[self.n - 1] = t - - def mac_func(self, i: int) -> None: - self.crc_func(i) - self.r[self.keyp] ^= i - - def init_state(self) -> None: - self.r[0] = 1 - self.r[1] = 1 - for i in range(2, self.n): - self.r[i] = self.r[i - 1] + self.r[i - 2] - self.konst = self.initkonst - - def save_state(self) -> None: - for i in range(self.n): - self.init_r[i] = self.r[i] - - def reload_state(self) -> None: - for i in range(self.n): - self.r[i] = self.init_r[i] - - def gen_konst(self) -> None: - self.konst = self.r[0] - - def add_key(self, k: int) -> None: - self.r[self.keyp] ^= k - - def diffuse(self) -> None: - for _ in range(self.fold): - self.cycle() - - def load_key(self, key: bytes) -> None: - i: int - j: int - t: int - padding_size = int((len(key) + 3) / 4) * 4 - len(key) - key = key + (b"\x00" * padding_size) + struct.pack(" None: - self.init_state() - self.load_key(key) - self.gen_konst() - self.save_state() - self.nbuf = 0 - - def nonce(self, nonce: typing.Union[bytes, int]) -> None: - if type(nonce) is int: - nonce = bytes(struct.pack(">I", nonce)) - self.reload_state() - self.konst = self.initkonst - self.load_key(nonce) - self.gen_konst() - self.nbuf = 0 - - def encrypt(self, buffer: bytes, n: int = None) -> bytes: - if n is None: - return self.encrypt(buffer, len(buffer)) - buffer = bytearray(buffer) - i = 0 - j: int - t: int - if self.nbuf != 0: - while self.nbuf != 0 and n != 0: - self.mbuf ^= (buffer[i] & 0xff) << (32 - self.nbuf) - buffer[i] ^= (self.sbuf >> (32 - self.nbuf)) & 0xff - i += 1 - self.nbuf -= 8 - n -= 1 - if self.nbuf != 0: - return b"" - self.mac_func(self.mbuf) - j = n & ~0x03 - while i < j: - self.cycle() - t = ((buffer[i + 3] & 0xFF) << 24) | \ - ((buffer[i + 2] & 0xFF) << 16) | \ - ((buffer[i + 1] & 0xFF) << 8) | \ - (buffer[i] & 0xFF) - self.mac_func(t) - t ^= self.sbuf - buffer[i + 3] = (t >> 24) & 0xFF - buffer[i + 2] = (t >> 16) & 0xFF - buffer[i + 1] = (t >> 8) & 0xFF - buffer[i] = t & 0xFF - i += 4 - n &= 0x03 - if n != 0: - self.cycle() - self.mbuf = 0 - self.nbuf = 32 - while self.nbuf != 0 and n != 0: - self.mbuf ^= (buffer[i] & 0xff) << (32 - self.nbuf) - buffer[i] ^= (self.sbuf >> (32 - self.nbuf)) & 0xff - i += 1 - self.nbuf -= 8 - n -= 1 - return bytes(buffer) - - def decrypt(self, buffer: bytes, n: int = None) -> bytes: - if n is None: - return self.decrypt(buffer, len(buffer)) - buffer = bytearray(buffer) - i = 0 - j: int - t: int - if self.nbuf != 0: - while self.nbuf != 0 and n != 0: - buffer[i] ^= (self.sbuf >> (32 - self.nbuf)) & 0xff - self.mbuf ^= (buffer[i] & 0xff) << (32 - self.nbuf) - i += 1 - self.nbuf -= 8 - n -= 1 - if self.nbuf != 0: - return b"" - self.mac_func(self.mbuf) - j = n & ~0x03 - while i < j: - self.cycle() - t = ((buffer[i + 3] & 0xFF) << 24) | \ - ((buffer[i + 2] & 0xFF) << 16) | \ - ((buffer[i + 1] & 0xFF) << 8) | \ - (buffer[i] & 0xFF) - t ^= self.sbuf - self.mac_func(t) - buffer[i + 3] = (t >> 24) & 0xFF - buffer[i + 2] = (t >> 16) & 0xFF - buffer[i + 1] = (t >> 8) & 0xFF - buffer[i] = t & 0xFF - i += 4 - n &= 0x03 - if n != 0: - self.cycle() - self.mbuf = 0 - self.nbuf = 32 - while self.nbuf != 0 and n != 0: - buffer[i] ^= (self.sbuf >> (32 - self.nbuf)) & 0xff - self.mbuf ^= (buffer[i] & 0xff) << (32 - self.nbuf) - i += 1 - self.nbuf -= 8 - n -= 1 - return bytes(buffer) - - def finish(self, n: int) -> bytes: - buffer = bytearray(4) - i = 0 - j: int - if self.nbuf != 0: - self.mac_func(self.mbuf) - self.cycle() - self.add_key(self.initkonst ^ (self.nbuf << 3)) - self.nbuf = 0 - for j in range(self.n): - self.r[j] ^= self.crc[j] - self.diffuse() - while n > 0: - self.cycle() - if n >= 4: - buffer[i + 3] = (self.sbuf >> 24) & 0xff - buffer[i + 2] = (self.sbuf >> 16) & 0xff - buffer[i + 1] = (self.sbuf >> 8) & 0xff - buffer[i] = self.sbuf & 0xff - n -= 4 - i += 4 - else: - for j in range(n): - buffer[i + j] = (self.sbuf >> (i * 8)) & 0xff - break - return bytes(buffer) diff --git a/librespot/dealer.py b/librespot/dealer.py deleted file mode 100644 index 143c256..0000000 --- a/librespot/dealer.py +++ /dev/null @@ -1,11 +0,0 @@ -from __future__ import annotations -from librespot.core import ApResolver -from librespot.metadata import AlbumId, ArtistId, EpisodeId, ShowId, TrackId -from librespot.proto import Connect_pb2 as Connect, Metadata_pb2 as Metadata -from librespot.structure import Closeable -import logging -import requests -import typing - -if typing.TYPE_CHECKING: - from librespot.core import Session diff --git a/librespot/mercury.py b/librespot/mercury.py deleted file mode 100644 index 450b98f..0000000 --- a/librespot/mercury.py +++ /dev/null @@ -1,394 +0,0 @@ -from __future__ import annotations -from librespot import util -from librespot.crypto import Packet -from librespot.proto import Mercury_pb2 as Mercury, Pubsub_pb2 as Pubsub -from librespot.structure import Closeable, PacketsReceiver, SubListener -import io -import json -import logging -import queue -import struct -import threading -import typing - -if typing.TYPE_CHECKING: - from librespot.core import Session - - -class JsonMercuryRequest: - request: RawMercuryRequest - - def __init__(self, request: RawMercuryRequest): - self.request = request - - -class MercuryClient(Closeable, PacketsReceiver): - logger = logging.getLogger("Librespot:MercuryClient") - mercury_request_timeout = 3 - __callbacks: typing.Dict[int, Callback] = {} - __remove_callback_lock = threading.Condition() - __partials: typing.Dict[int, typing.List[bytes]] = {} - __seq_holder = 0 - __seq_holder_lock = threading.Condition() - __session: Session - __subscriptions: typing.List[InternalSubListener] = [] - __subscriptions_lock = threading.Condition() - - def __init__(self, session: Session): - self.__session = session - - def close(self) -> None: - """ - Close the MercuryClient instance - """ - if len(self.__subscriptions) != 0: - for listener in self.__subscriptions: - if listener.is_sub: - self.unsubscribe(listener.uri) - else: - self.not_interested_in(listener.listener) - if len(self.__callbacks) != 0: - with self.__remove_callback_lock: - self.__remove_callback_lock.wait(self.mercury_request_timeout) - self.__callbacks.clear() - - def dispatch(self, packet: Packet) -> None: - payload = io.BytesIO(packet.payload) - seq_length = struct.unpack(">H", payload.read(2))[0] - if seq_length == 2: - seq = struct.unpack(">H", payload.read(2))[0] - elif seq_length == 4: - seq = struct.unpack(">i", payload.read(4))[0] - elif seq_length == 8: - seq = struct.unpack(">q", payload.read(8))[0] - else: - raise RuntimeError("Unknown seq length: {}".format(seq_length)) - flags = payload.read(1) - parts = struct.unpack(">H", payload.read(2))[0] - partial = self.__partials.get(seq) - if partial is None or flags == 0: - partial = [] - self.__partials[seq] = partial - self.logger.debug( - "Handling packet, cmd: 0x{}, seq: {}, flags: {}, parts: {}".format( - util.bytes_to_hex(packet.cmd), seq, flags, parts)) - for _ in range(parts): - size = struct.unpack(">H", payload.read(2))[0] - buffer = payload.read(size) - partial.append(buffer) - self.__partials[seq] = partial - if flags != b"\x01": - return - self.__partials.pop(seq) - header = Mercury.Header() - header.ParseFromString(partial[0]) - response = MercuryClient.Response(header, partial) - if packet.is_cmd(Packet.Type.mercury_event): - dispatched = False - with self.__subscriptions_lock: - for sub in self.__subscriptions: - if sub.matches(header.uri): - sub.dispatch(response) - dispatched = True - if not dispatched: - self.logger.debug( - "Couldn't dispatch Mercury event seq: {}, uri: {}, code: {}, payload: {}" - .format(seq, header.uri, header.status_code, - response.payload)) - elif (packet.is_cmd(Packet.Type.mercury_req) - or packet.is_cmd(Packet.Type.mercury_sub) - or packet.is_cmd(Packet.Type.mercury_sub)): - callback = self.__callbacks.get(seq) - self.__callbacks.pop(seq) - if callback is not None: - callback.response(response) - else: - self.logger.warning( - "Skipped Mercury response, seq: {}, uri: {}, code: {}". - format(seq, response.uri, response.status_code)) - with self.__remove_callback_lock: - self.__remove_callback_lock.notify_all() - else: - self.logger.warning( - "Couldn't handle packet, seq: {}, uri: {}, code: {}".format( - seq, header.uri, header.status_code)) - - def interested_in(self, uri: str, listener: SubListener) -> None: - self.__subscriptions.append( - MercuryClient.InternalSubListener(uri, listener, False)) - - def not_interested_in(self, listener: SubListener) -> None: - try: - for subscription in self.__subscriptions: - if subscription.listener is listener: - self.__subscriptions.remove(subscription) - break - except ValueError: - pass - - def send(self, request: RawMercuryRequest, callback) -> int: - """ - Send the Mercury request - Args: - request: RawMercuryRequest - callback: Callback function - Returns: - MercuryClient.Response - """ - buffer = io.BytesIO() - seq: int - with self.__seq_holder_lock: - seq = self.__seq_holder - self.__seq_holder += 1 - self.logger.debug( - "Send Mercury request, seq: {}, uri: {}, method: {}".format( - seq, request.header.uri, request.header.method)) - buffer.write(struct.pack(">H", 4)) - buffer.write(struct.pack(">i", seq)) - buffer.write(b"\x01") - buffer.write(struct.pack(">H", 1 + len(request.payload))) - header_bytes = request.header.SerializeToString() - buffer.write(struct.pack(">H", len(header_bytes))) - buffer.write(header_bytes) - for part in request.payload: - buffer.write(struct.pack(">H", len(part))) - buffer.write(part) - buffer.seek(0) - cmd = Packet.Type.for_method(request.header.method) - self.__session.send(cmd, buffer.read()) - self.__callbacks[seq] = callback - return seq - - def send_sync(self, request: RawMercuryRequest) -> Response: - """ - Send the Mercury request - Args: - request: RawMercuryRequest - Returns: - MercuryClient.Response - """ - callback = MercuryClient.SyncCallback() - seq = self.send(request, callback) - try: - response = callback.wait_response() - if response is None: - raise IOError( - "Request timeout out, {} passed, yet no response. seq: {}". - format(self.mercury_request_timeout, seq)) - return response - except queue.Empty as e: - raise IOError(e) - - def send_sync_json(self, request: JsonMercuryRequest) -> typing.Any: - response = self.send_sync(request.request) - if 200 <= response.status_code < 300: - return json.loads(response.payload) - raise MercuryClient.MercuryException(response) - - def subscribe(self, uri: str, listener: SubListener) -> None: - """ - Subscribe URI - Args: - uri: - listener: - """ - response = self.send_sync(RawMercuryRequest.sub(uri)) - if response.status_code != 200: - raise RuntimeError(response) - if len(response.payload) > 0: - for payload in response.payload: - sub = Pubsub.Subscription() - sub.ParseFromString(payload) - self.__subscriptions.append( - MercuryClient.InternalSubListener(sub.uri, listener, True)) - else: - self.__subscriptions.append( - MercuryClient.InternalSubListener(uri, listener, True)) - self.logger.debug("Subscribed successfully to {}!".format(uri)) - - def unsubscribe(self, uri) -> None: - """ - Unsubscribe URI - Args: - uri: - """ - response = self.send_sync(RawMercuryRequest.unsub(uri)) - if response.status_code != 200: - raise RuntimeError(response) - for subscription in self.__subscriptions: - if subscription.matches(uri): - self.__subscriptions.remove(subscription) - break - self.logger.debug("Unsubscribed successfully from {}!".format(uri)) - - class Callback: - def response(self, response: MercuryClient.Response) -> None: - raise NotImplementedError - - class InternalSubListener: - uri: str - listener: SubListener - is_sub: bool - - def __init__(self, uri: str, listener: SubListener, is_sub: bool): - self.uri = uri - self.listener = listener - self.is_sub = is_sub - - def matches(self, uri: str) -> bool: - """ - Compare with the URI given - Args: - uri: URI to be compared - Returns: - bool - """ - return uri.startswith(self.uri) - - def dispatch(self, response: MercuryClient.Response) -> None: - """ - Dispatch the event response - Args: - response: Response generated by the event - """ - self.listener.event(response) - - class MercuryException(Exception): - code: int - - def __init__(self, response: MercuryClient.Response): - super().__init__("status: {}".format(response.status_code)) - self.code = response.status_code - - class PubSubException(MercuryException): - pass - - class Response: - uri: str - payload: bytes - status_code: int - - def __init__(self, header: Mercury.Header, payload: list[bytes]): - self.uri = header.uri - self.status_code = header.status_code - self.payload = b"".join(payload[1:]) - - class SyncCallback(Callback): - __reference = queue.Queue() - - def response(self, response: MercuryClient.Response) -> None: - """ - Set the response - :param response: - :return: - """ - self.__reference.put(response) - self.__reference.task_done() - - def wait_response(self) -> typing.Any: - return self.__reference.get( - timeout=MercuryClient.mercury_request_timeout) - - -class MercuryRequests: - keymaster_client_id = "65b708073fc0480ea92a077233ca87bd" - - @staticmethod - def get_root_playlists(username: str): - """ - @TODO implement function - """ - - @staticmethod - def request_token(device_id, scope): - return JsonMercuryRequest( - RawMercuryRequest.get( - "hm://keymaster/token/authenticated?scope={}&client_id={}&device_id={}" - .format(scope, MercuryRequests.keymaster_client_id, - device_id))) - - -class RawMercuryRequest: - header: Mercury.Header - payload: typing.List[bytes] - - def __init__(self, header: Mercury.Header, payload: typing.List[bytes]): - self.header = header - self.payload = payload - - @staticmethod - def sub(uri: str): - return RawMercuryRequest.new_builder().set_uri(uri).set_method( - "SUB").build() - - @staticmethod - def unsub(uri: str): - return RawMercuryRequest.new_builder().set_uri(uri).set_method( - "UNSUB").build() - - @staticmethod - def get(uri: str): - return RawMercuryRequest.new_builder().set_uri(uri).set_method( - "GET").build() - - @staticmethod - def send(uri: str, part: bytes): - return RawMercuryRequest.new_builder().set_uri(uri) \ - .add_payload_part(part).set_method("SEND").build() - - @staticmethod - def post(uri: str, part: bytes): - return RawMercuryRequest.new_builder().set_uri(uri) \ - .set_method("POST").add_payload_part(part).build() - - @staticmethod - def new_builder(): - return RawMercuryRequest.Builder() - - class Builder: - header_dict: dict - payload: typing.List[bytes] - - def __init__(self): - self.header_dict = {} - self.payload = [] - - def set_uri(self, uri: str): - self.header_dict["uri"] = uri - return self - - def set_content_type(self, content_type: str): - self.header_dict["content_type"] = content_type - return self - - def set_method(self, method: str): - self.header_dict["method"] = method - return self - - def add_user_field(self, - field: Mercury.UserField = None, - key: str = None, - value: str = None): - if field is None and (key is None or value is None): - return self - try: - self.header_dict["user_fields"] - except KeyError: - self.header_dict["user_fields"] = [] - if field is not None: - self.header_dict["user_fields"].append(field) - if key is not None and value is not None: - self.header_dict["user_fields"].append( - Mercury.UserField(key=key, value=value.encode())) - return self - - def add_payload_part(self, part: bytes): - self.payload.append(part) - return self - - def add_protobuf_payload(self, msg): - return self.add_payload_part(msg) - - def build(self): - return RawMercuryRequest(Mercury.Header(**self.header_dict), - self.payload) diff --git a/librespot/metadata.py b/librespot/metadata.py deleted file mode 100644 index a5e01e9..0000000 --- a/librespot/metadata.py +++ /dev/null @@ -1,283 +0,0 @@ -from __future__ import annotations -from librespot import util -from librespot.proto.ContextTrack_pb2 import ContextTrack -from librespot.util import Base62 -import re - - -class SpotifyId: - STATIC_FROM_URI = "fromUri" - STATIC_FROM_BASE62 = "fromBase62" - STATIC_FROM_HEX = "fromHex" - - @staticmethod - def from_base62(base62: str): - raise NotImplementedError - - @staticmethod - def from_hex(hex_str: str): - raise NotImplementedError - - @staticmethod - def from_uri(uri: str): - raise NotImplementedError - - def to_spotify_uri(self) -> str: - raise NotImplementedError - - class SpotifyIdParsingException(Exception): - pass - - -class PlayableId: - base62 = Base62.create_instance_with_inverted_character_set() - - @staticmethod - def from_uri(uri: str) -> PlayableId: - if not PlayableId.is_supported(uri): - return UnsupportedId(uri) - if TrackId.pattern.search(uri) is not None: - return TrackId.from_uri(uri) - if EpisodeId.pattern.search(uri) is not None: - return EpisodeId.from_uri(uri) - raise TypeError("Unknown uri: {}".format(uri)) - - @staticmethod - def is_supported(uri: str): - return (not uri.startswith("spotify:local:") - and not uri == "spotify:delimiter" - and not uri == "spotify:meta:delimiter") - - @staticmethod - def should_play(track: ContextTrack): - return track.metadata_or_default - - def get_gid(self) -> bytes: - raise NotImplementedError - - def hex_id(self) -> str: - raise NotImplementedError - - def to_spotify_uri(self) -> str: - raise NotImplementedError - - -class PlaylistId(SpotifyId): - base62 = Base62.create_instance_with_inverted_character_set() - pattern = re.compile(r"spotify:playlist:(.{22})") - __id: str - - def __init__(self, _id: str): - self.__id = _id - - @staticmethod - def from_uri(uri: str) -> PlaylistId: - matcher = PlaylistId.pattern.search(uri) - if matcher is not None: - playlist_id = matcher.group(1) - return PlaylistId(playlist_id) - raise TypeError("Not a Spotify playlist ID: {}.".format(uri)) - - def id(self) -> str: - return self.__id - - def to_spotify_uri(self) -> str: - return "spotify:playlist:" + self.__id - - -class UnsupportedId(PlayableId): - uri: str - - def __init__(self, uri: str): - self.uri = uri - - def get_gid(self) -> bytes: - raise TypeError() - - def hex_id(self) -> str: - raise TypeError() - - def to_spotify_uri(self) -> str: - return self.uri - - -class AlbumId(SpotifyId): - base62 = Base62.create_instance_with_inverted_character_set() - pattern = re.compile(r"spotify:album:(.{22})") - __hex_id: str - - def __init__(self, hex_id: str): - self.__hex_id = hex_id.lower() - - @staticmethod - def from_uri(uri: str) -> AlbumId: - matcher = AlbumId.pattern.search(uri) - if matcher is not None: - album_id = matcher.group(1) - return AlbumId(util.bytes_to_hex(AlbumId.base62.decode(album_id.encode(), 16))) - raise TypeError("Not a Spotify album ID: {}.".format(uri)) - - @staticmethod - def from_base62(base62: str) -> AlbumId: - return AlbumId(util.bytes_to_hex(AlbumId.base62.decode(base62.encode(), 16))) - - @staticmethod - def from_hex(hex_str: str) -> AlbumId: - return AlbumId(hex_str) - - def to_mercury_uri(self) -> str: - return "hm://metadata/4/album/{}".format(self.__hex_id) - - def hex_id(self) -> str: - return self.__hex_id - - def to_spotify_uri(self) -> str: - return "spotify:album:{}".format( - AlbumId.base62.encode(util.hex_to_bytes(self.__hex_id)).decode()) - - -class ArtistId(SpotifyId): - base62 = Base62.create_instance_with_inverted_character_set() - pattern = re.compile("spotify:artist:(.{22})") - __hex_id: str - - def __init__(self, hex_id: str): - self.__hex_id = hex_id.lower() - - @staticmethod - def from_uri(uri: str) -> ArtistId: - matcher = ArtistId.pattern.search(uri) - if matcher is not None: - artist_id = matcher.group(1) - return ArtistId( - util.bytes_to_hex(ArtistId.base62.decode(artist_id.encode(), 16))) - raise TypeError("Not a Spotify artist ID: {}".format(uri)) - - @staticmethod - def from_base62(base62: str) -> ArtistId: - return ArtistId(util.bytes_to_hex(ArtistId.base62.decode(base62.encode(), 16))) - - @staticmethod - def from_hex(hex_str: str) -> ArtistId: - return ArtistId(hex_str) - - def to_mercury_uri(self) -> str: - return "hm://metadata/4/artist/{}".format(self.__hex_id) - - def to_spotify_uri(self) -> str: - return "spotify:artist:{}".format( - ArtistId.base62.encode(util.hex_to_bytes(self.__hex_id)).decode()) - - def hex_id(self) -> str: - return self.__hex_id - - -class EpisodeId(SpotifyId, PlayableId): - pattern = re.compile(r"spotify:episode:(.{22})") - __hex_id: str - - def __init__(self, hex_id: str): - self.__hex_id = hex_id.lower() - - @staticmethod - def from_uri(uri: str) -> EpisodeId: - matcher = EpisodeId.pattern.search(uri) - if matcher is not None: - episode_id = matcher.group(1) - return EpisodeId( - util.bytes_to_hex(PlayableId.base62.decode(episode_id.encode(), 16))) - raise TypeError("Not a Spotify episode ID: {}".format(uri)) - - @staticmethod - def from_base62(base62: str) -> EpisodeId: - return EpisodeId( - util.bytes_to_hex(PlayableId.base62.decode(base62.encode(), 16))) - - @staticmethod - def from_hex(hex_str: str) -> EpisodeId: - return EpisodeId(hex_str) - - def to_mercury_uri(self) -> str: - return "hm://metadata/4/episode/{}".format(self.__hex_id) - - def to_spotify_uri(self) -> str: - return "Spotify:episode:{}".format( - PlayableId.base62.encode(util.hex_to_bytes(self.__hex_id)).decode()) - - def hex_id(self) -> str: - return self.__hex_id - - def get_gid(self) -> bytes: - return util.hex_to_bytes(self.__hex_id) - - -class ShowId(SpotifyId): - base62 = Base62.create_instance_with_inverted_character_set() - pattern = re.compile("spotify:show:(.{22})") - __hex_id: str - - def __init__(self, hex_id: str): - self.__hex_id = hex_id - - @staticmethod - def from_uri(uri: str) -> ShowId: - matcher = ShowId.pattern.search(uri) - if matcher is not None: - show_id = matcher.group(1) - return ShowId(util.bytes_to_hex(ShowId.base62.decode(show_id.encode(), 16))) - raise TypeError("Not a Spotify show ID: {}".format(uri)) - - @staticmethod - def from_base62(base62: str) -> ShowId: - return ShowId(util.bytes_to_hex(ShowId.base62.decode(base62.encode(), 16))) - - @staticmethod - def from_hex(hex_str: str) -> ShowId: - return ShowId(hex_str) - - def to_mercury_uri(self) -> str: - return "hm://metadata/4/show/{}".format(self.__hex_id) - - def to_spotify_uri(self) -> str: - return "spotify:show:{}".format( - ShowId.base62.encode(util.hex_to_bytes(self.__hex_id)).decode()) - - def hex_id(self) -> str: - return self.__hex_id - - -class TrackId(PlayableId, SpotifyId): - pattern = re.compile("spotify:track:(.{22})") - __hex_id: str - - def __init__(self, hex_id: str): - self.__hex_id = hex_id.lower() - - @staticmethod - def from_uri(uri: str) -> TrackId: - search = TrackId.pattern.search(uri) - if search is not None: - track_id = search.group(1) - return TrackId( - util.bytes_to_hex(PlayableId.base62.decode(track_id.encode(), 16))) - raise RuntimeError("Not a Spotify track ID: {}".format(uri)) - - @staticmethod - def from_base62(base62: str) -> TrackId: - return TrackId(util.bytes_to_hex(PlayableId.base62.decode(base62.encode(), 16))) - - @staticmethod - def from_hex(hex_str: str) -> TrackId: - return TrackId(hex_str) - - def to_mercury_uri(self) -> str: - return "hm://metadata/4/track/{}".format(self.__hex_id) - - def to_spotify_uri(self) -> str: - return "spotify:track:{}".format(TrackId.base62.encode(util.hex_to_bytes(self.__hex_id)).decode()) - - def hex_id(self) -> str: - return self.__hex_id - - def get_gid(self) -> bytes: - return util.hex_to_bytes(self.__hex_id) diff --git a/librespot/proto/Authentication_pb2.py b/librespot/proto/Authentication_pb2.py deleted file mode 100644 index b38baf1..0000000 --- a/librespot/proto/Authentication_pb2.py +++ /dev/null @@ -1,1984 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: authentication.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import enum_type_wrapper -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 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name='authentication.proto', - package='spotify', - syntax='proto2', - serialized_options=b'\n\013com.spotify', - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x14\x61uthentication.proto\x12\x07spotify\"\xa2\x03\n\x17\x43lientResponseEncrypted\x12\x34\n\x11login_credentials\x18\n \x02(\x0b\x32\x19.spotify.LoginCredentials\x12\x32\n\x10\x61\x63\x63ount_creation\x18\x14 \x01(\x0e\x32\x18.spotify.AccountCreation\x12?\n\x14\x66ingerprint_response\x18\x1e \x01(\x0b\x32!.spotify.FingerprintResponseUnion\x12-\n\x0bpeer_ticket\x18( \x01(\x0b\x32\x18.spotify.PeerTicketUnion\x12(\n\x0bsystem_info\x18\x32 \x02(\x0b\x32\x13.spotify.SystemInfo\x12\x16\n\x0eplatform_model\x18< \x01(\t\x12\x16\n\x0eversion_string\x18\x46 \x01(\t\x12)\n\x06\x61ppkey\x18P \x01(\x0b\x32\x19.spotify.LibspotifyAppKey\x12(\n\x0b\x63lient_info\x18Z \x01(\x0b\x32\x13.spotify.ClientInfo\"a\n\x10LoginCredentials\x12\x10\n\x08username\x18\n \x01(\t\x12(\n\x03typ\x18\x14 \x02(\x0e\x32\x1b.spotify.AuthenticationType\x12\x11\n\tauth_data\x18\x1e \x01(\x0c\"\x89\x01\n\x18\x46ingerprintResponseUnion\x12\x30\n\x05grain\x18\n \x01(\x0b\x32!.spotify.FingerprintGrainResponse\x12;\n\x0bhmac_ripemd\x18\x14 \x01(\x0b\x32&.spotify.FingerprintHmacRipemdResponse\"1\n\x18\x46ingerprintGrainResponse\x12\x15\n\rencrypted_key\x18\n \x02(\x0c\"-\n\x1d\x46ingerprintHmacRipemdResponse\x12\x0c\n\x04hmac\x18\n \x02(\x0c\"o\n\x0fPeerTicketUnion\x12\x30\n\npublic_key\x18\n \x01(\x0b\x32\x1c.spotify.PeerTicketPublicKey\x12*\n\nold_ticket\x18\x14 \x01(\x0b\x32\x16.spotify.PeerTicketOld\")\n\x13PeerTicketPublicKey\x12\x12\n\npublic_key\x18\n \x02(\x0c\"C\n\rPeerTicketOld\x12\x13\n\x0bpeer_ticket\x18\n \x02(\x0c\x12\x1d\n\x15peer_ticket_signature\x18\x14 \x02(\x0c\"\x81\x02\n\nSystemInfo\x12&\n\ncpu_family\x18\n \x02(\x0e\x32\x12.spotify.CpuFamily\x12\x13\n\x0b\x63pu_subtype\x18\x14 \x01(\r\x12\x0f\n\x07\x63pu_ext\x18\x1e \x01(\r\x12\x1d\n\x05\x62rand\x18( \x01(\x0e\x32\x0e.spotify.Brand\x12\x13\n\x0b\x62rand_flags\x18\x32 \x01(\r\x12\x17\n\x02os\x18< \x02(\x0e\x32\x0b.spotify.Os\x12\x12\n\nos_version\x18\x46 \x01(\r\x12\x0e\n\x06os_ext\x18P \x01(\r\x12!\n\x19system_information_string\x18Z \x01(\t\x12\x11\n\tdevice_id\x18\x64 \x01(\t\"p\n\x10LibspotifyAppKey\x12\x0f\n\x07version\x18\x01 \x02(\r\x12\x0e\n\x06\x64\x65vkey\x18\x02 \x02(\x0c\x12\x11\n\tsignature\x18\x03 \x02(\x0c\x12\x11\n\tuseragent\x18\x04 \x02(\t\x12\x15\n\rcallback_hash\x18\x05 \x02(\x0c\"X\n\nClientInfo\x12\x0f\n\x07limited\x18\x01 \x01(\x08\x12\'\n\x02\x66\x62\x18\x02 \x01(\x0b\x32\x1b.spotify.ClientInfoFacebook\x12\x10\n\x08language\x18\x03 \x01(\t\"(\n\x12\x43lientInfoFacebook\x12\x12\n\nmachine_id\x18\x01 \x01(\t\"\xe9\x02\n\tAPWelcome\x12\x1a\n\x12\x63\x61nonical_username\x18\n \x02(\t\x12\x34\n\x16\x61\x63\x63ount_type_logged_in\x18\x14 \x02(\x0e\x32\x14.spotify.AccountType\x12\x38\n\x1a\x63redentials_type_logged_in\x18\x19 \x02(\x0e\x32\x14.spotify.AccountType\x12\x43\n\x1ereusable_auth_credentials_type\x18\x1e \x02(\x0e\x32\x1b.spotify.AuthenticationType\x12!\n\x19reusable_auth_credentials\x18( \x02(\x0c\x12\x12\n\nlfs_secret\x18\x32 \x01(\x0c\x12*\n\x0c\x61\x63\x63ount_info\x18< \x01(\x0b\x32\x14.spotify.AccountInfo\x12(\n\x02\x66\x62\x18\x46 \x01(\x0b\x32\x1c.spotify.AccountInfoFacebook\"k\n\x0b\x41\x63\x63ountInfo\x12,\n\x07spotify\x18\x01 \x01(\x0b\x32\x1b.spotify.AccountInfoSpotify\x12.\n\x08\x66\x61\x63\x65\x62ook\x18\x02 \x01(\x0b\x32\x1c.spotify.AccountInfoFacebook\"\x14\n\x12\x41\x63\x63ountInfoSpotify\"?\n\x13\x41\x63\x63ountInfoFacebook\x12\x14\n\x0c\x61\x63\x63\x65ss_token\x18\x01 \x01(\t\x12\x12\n\nmachine_id\x18\x02 \x01(\t*\xd6\x01\n\x12\x41uthenticationType\x12\x1c\n\x18\x41UTHENTICATION_USER_PASS\x10\x00\x12-\n)AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS\x10\x01\x12.\n*AUTHENTICATION_STORED_FACEBOOK_CREDENTIALS\x10\x02\x12 \n\x1c\x41UTHENTICATION_SPOTIFY_TOKEN\x10\x03\x12!\n\x1d\x41UTHENTICATION_FACEBOOK_TOKEN\x10\x04*Y\n\x0f\x41\x63\x63ountCreation\x12\"\n\x1e\x41\x43\x43OUNT_CREATION_ALWAYS_PROMPT\x10\x01\x12\"\n\x1e\x41\x43\x43OUNT_CREATION_ALWAYS_CREATE\x10\x03*\x9d\x01\n\tCpuFamily\x12\x0f\n\x0b\x43PU_UNKNOWN\x10\x00\x12\x0b\n\x07\x43PU_X86\x10\x01\x12\x0e\n\nCPU_X86_64\x10\x02\x12\x0b\n\x07\x43PU_PPC\x10\x03\x12\x0e\n\nCPU_PPC_64\x10\x04\x12\x0b\n\x07\x43PU_ARM\x10\x05\x12\x0c\n\x08\x43PU_IA64\x10\x06\x12\n\n\x06\x43PU_SH\x10\x07\x12\x0c\n\x08\x43PU_MIPS\x10\x08\x12\x10\n\x0c\x43PU_BLACKFIN\x10\t*K\n\x05\x42rand\x12\x13\n\x0f\x42RAND_UNBRANDED\x10\x00\x12\r\n\tBRAND_INQ\x10\x01\x12\r\n\tBRAND_HTC\x10\x02\x12\x0f\n\x0b\x42RAND_NOKIA\x10\x03*\xd1\x02\n\x02Os\x12\x0e\n\nOS_UNKNOWN\x10\x00\x12\x0e\n\nOS_WINDOWS\x10\x01\x12\n\n\x06OS_OSX\x10\x02\x12\r\n\tOS_IPHONE\x10\x03\x12\n\n\x06OS_S60\x10\x04\x12\x0c\n\x08OS_LINUX\x10\x05\x12\x11\n\rOS_WINDOWS_CE\x10\x06\x12\x0e\n\nOS_ANDROID\x10\x07\x12\x0b\n\x07OS_PALM\x10\x08\x12\x0e\n\nOS_FREEBSD\x10\t\x12\x11\n\rOS_BLACKBERRY\x10\n\x12\x0c\n\x08OS_SONOS\x10\x0b\x12\x0f\n\x0bOS_LOGITECH\x10\x0c\x12\n\n\x06OS_WP7\x10\r\x12\x0c\n\x08OS_ONKYO\x10\x0e\x12\x0e\n\nOS_PHILIPS\x10\x0f\x12\t\n\x05OS_WD\x10\x10\x12\x0c\n\x08OS_VOLVO\x10\x11\x12\x0b\n\x07OS_TIVO\x10\x12\x12\x0b\n\x07OS_AWOX\x10\x13\x12\x0c\n\x08OS_MEEGO\x10\x14\x12\r\n\tOS_QNXNTO\x10\x15\x12\n\n\x06OS_BCO\x10\x16*(\n\x0b\x41\x63\x63ountType\x12\x0b\n\x07Spotify\x10\x00\x12\x0c\n\x08\x46\x61\x63\x65\x62ook\x10\x01\x42\r\n\x0b\x63om.spotify' -) - -_AUTHENTICATIONTYPE = _descriptor.EnumDescriptor( - name='AuthenticationType', - full_name='spotify.AuthenticationType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='AUTHENTICATION_USER_PASS', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AUTHENTICATION_STORED_FACEBOOK_CREDENTIALS', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AUTHENTICATION_SPOTIFY_TOKEN', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AUTHENTICATION_FACEBOOK_TOKEN', - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=2083, - serialized_end=2297, -) -_sym_db.RegisterEnumDescriptor(_AUTHENTICATIONTYPE) - -AuthenticationType = enum_type_wrapper.EnumTypeWrapper(_AUTHENTICATIONTYPE) -_ACCOUNTCREATION = _descriptor.EnumDescriptor( - name='AccountCreation', - full_name='spotify.AccountCreation', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='ACCOUNT_CREATION_ALWAYS_PROMPT', - index=0, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='ACCOUNT_CREATION_ALWAYS_CREATE', - index=1, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=2299, - serialized_end=2388, -) -_sym_db.RegisterEnumDescriptor(_ACCOUNTCREATION) - -AccountCreation = enum_type_wrapper.EnumTypeWrapper(_ACCOUNTCREATION) -_CPUFAMILY = _descriptor.EnumDescriptor( - name='CpuFamily', - full_name='spotify.CpuFamily', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='CPU_UNKNOWN', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CPU_X86', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CPU_X86_64', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CPU_PPC', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CPU_PPC_64', - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CPU_ARM', - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CPU_IA64', - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CPU_SH', - index=7, - number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CPU_MIPS', - index=8, - number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CPU_BLACKFIN', - index=9, - number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=2391, - serialized_end=2548, -) -_sym_db.RegisterEnumDescriptor(_CPUFAMILY) - -CpuFamily = enum_type_wrapper.EnumTypeWrapper(_CPUFAMILY) -_BRAND = _descriptor.EnumDescriptor( - name='Brand', - full_name='spotify.Brand', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='BRAND_UNBRANDED', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='BRAND_INQ', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='BRAND_HTC', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='BRAND_NOKIA', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=2550, - serialized_end=2625, -) -_sym_db.RegisterEnumDescriptor(_BRAND) - -Brand = enum_type_wrapper.EnumTypeWrapper(_BRAND) -_OS = _descriptor.EnumDescriptor( - name='Os', - full_name='spotify.Os', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='OS_UNKNOWN', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_WINDOWS', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_OSX', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_IPHONE', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_S60', - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_LINUX', - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_WINDOWS_CE', - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_ANDROID', - index=7, - number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_PALM', - index=8, - number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_FREEBSD', - index=9, - number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_BLACKBERRY', - index=10, - number=10, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_SONOS', - index=11, - number=11, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_LOGITECH', - index=12, - number=12, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_WP7', - index=13, - number=13, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_ONKYO', - index=14, - number=14, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_PHILIPS', - index=15, - number=15, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_WD', - index=16, - number=16, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_VOLVO', - index=17, - number=17, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_TIVO', - index=18, - number=18, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_AWOX', - index=19, - number=19, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_MEEGO', - index=20, - number=20, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_QNXNTO', - index=21, - number=21, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OS_BCO', - index=22, - number=22, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=2628, - serialized_end=2965, -) -_sym_db.RegisterEnumDescriptor(_OS) - -Os = enum_type_wrapper.EnumTypeWrapper(_OS) -_ACCOUNTTYPE = _descriptor.EnumDescriptor( - name='AccountType', - full_name='spotify.AccountType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='Spotify', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='Facebook', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=2967, - serialized_end=3007, -) -_sym_db.RegisterEnumDescriptor(_ACCOUNTTYPE) - -AccountType = enum_type_wrapper.EnumTypeWrapper(_ACCOUNTTYPE) -AUTHENTICATION_USER_PASS = 0 -AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS = 1 -AUTHENTICATION_STORED_FACEBOOK_CREDENTIALS = 2 -AUTHENTICATION_SPOTIFY_TOKEN = 3 -AUTHENTICATION_FACEBOOK_TOKEN = 4 -ACCOUNT_CREATION_ALWAYS_PROMPT = 1 -ACCOUNT_CREATION_ALWAYS_CREATE = 3 -CPU_UNKNOWN = 0 -CPU_X86 = 1 -CPU_X86_64 = 2 -CPU_PPC = 3 -CPU_PPC_64 = 4 -CPU_ARM = 5 -CPU_IA64 = 6 -CPU_SH = 7 -CPU_MIPS = 8 -CPU_BLACKFIN = 9 -BRAND_UNBRANDED = 0 -BRAND_INQ = 1 -BRAND_HTC = 2 -BRAND_NOKIA = 3 -OS_UNKNOWN = 0 -OS_WINDOWS = 1 -OS_OSX = 2 -OS_IPHONE = 3 -OS_S60 = 4 -OS_LINUX = 5 -OS_WINDOWS_CE = 6 -OS_ANDROID = 7 -OS_PALM = 8 -OS_FREEBSD = 9 -OS_BLACKBERRY = 10 -OS_SONOS = 11 -OS_LOGITECH = 12 -OS_WP7 = 13 -OS_ONKYO = 14 -OS_PHILIPS = 15 -OS_WD = 16 -OS_VOLVO = 17 -OS_TIVO = 18 -OS_AWOX = 19 -OS_MEEGO = 20 -OS_QNXNTO = 21 -OS_BCO = 22 -Spotify = 0 -Facebook = 1 - -_CLIENTRESPONSEENCRYPTED = _descriptor.Descriptor( - name='ClientResponseEncrypted', - full_name='spotify.ClientResponseEncrypted', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='login_credentials', - full_name='spotify.ClientResponseEncrypted.login_credentials', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='account_creation', - full_name='spotify.ClientResponseEncrypted.account_creation', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fingerprint_response', - full_name='spotify.ClientResponseEncrypted.fingerprint_response', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='peer_ticket', - full_name='spotify.ClientResponseEncrypted.peer_ticket', - index=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='system_info', - full_name='spotify.ClientResponseEncrypted.system_info', - index=4, - number=50, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='platform_model', - full_name='spotify.ClientResponseEncrypted.platform_model', - index=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version_string', - full_name='spotify.ClientResponseEncrypted.version_string', - index=6, - number=70, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='appkey', - full_name='spotify.ClientResponseEncrypted.appkey', - index=7, - number=80, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_info', - full_name='spotify.ClientResponseEncrypted.client_info', - index=8, - number=90, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=34, - serialized_end=452, -) - -_LOGINCREDENTIALS = _descriptor.Descriptor( - name='LoginCredentials', - full_name='spotify.LoginCredentials', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='username', - full_name='spotify.LoginCredentials.username', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='typ', - full_name='spotify.LoginCredentials.typ', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auth_data', - full_name='spotify.LoginCredentials.auth_data', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=454, - serialized_end=551, -) - -_FINGERPRINTRESPONSEUNION = _descriptor.Descriptor( - name='FingerprintResponseUnion', - full_name='spotify.FingerprintResponseUnion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='grain', - full_name='spotify.FingerprintResponseUnion.grain', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='hmac_ripemd', - full_name='spotify.FingerprintResponseUnion.hmac_ripemd', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=554, - serialized_end=691, -) - -_FINGERPRINTGRAINRESPONSE = _descriptor.Descriptor( - name='FingerprintGrainResponse', - full_name='spotify.FingerprintGrainResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='encrypted_key', - full_name='spotify.FingerprintGrainResponse.encrypted_key', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=693, - serialized_end=742, -) - -_FINGERPRINTHMACRIPEMDRESPONSE = _descriptor.Descriptor( - name='FingerprintHmacRipemdResponse', - full_name='spotify.FingerprintHmacRipemdResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='hmac', - full_name='spotify.FingerprintHmacRipemdResponse.hmac', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=744, - serialized_end=789, -) - -_PEERTICKETUNION = _descriptor.Descriptor( - name='PeerTicketUnion', - full_name='spotify.PeerTicketUnion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='public_key', - full_name='spotify.PeerTicketUnion.public_key', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='old_ticket', - full_name='spotify.PeerTicketUnion.old_ticket', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=791, - serialized_end=902, -) - -_PEERTICKETPUBLICKEY = _descriptor.Descriptor( - name='PeerTicketPublicKey', - full_name='spotify.PeerTicketPublicKey', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='public_key', - full_name='spotify.PeerTicketPublicKey.public_key', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=904, - serialized_end=945, -) - -_PEERTICKETOLD = _descriptor.Descriptor( - name='PeerTicketOld', - full_name='spotify.PeerTicketOld', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='peer_ticket', - full_name='spotify.PeerTicketOld.peer_ticket', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='peer_ticket_signature', - full_name='spotify.PeerTicketOld.peer_ticket_signature', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=947, - serialized_end=1014, -) - -_SYSTEMINFO = _descriptor.Descriptor( - name='SystemInfo', - full_name='spotify.SystemInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='cpu_family', - full_name='spotify.SystemInfo.cpu_family', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cpu_subtype', - full_name='spotify.SystemInfo.cpu_subtype', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cpu_ext', - full_name='spotify.SystemInfo.cpu_ext', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='brand', - full_name='spotify.SystemInfo.brand', - index=3, - number=40, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='brand_flags', - full_name='spotify.SystemInfo.brand_flags', - index=4, - number=50, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='os', - full_name='spotify.SystemInfo.os', - index=5, - number=60, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='os_version', - full_name='spotify.SystemInfo.os_version', - index=6, - number=70, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='os_ext', - full_name='spotify.SystemInfo.os_ext', - index=7, - number=80, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='system_information_string', - full_name='spotify.SystemInfo.system_information_string', - index=8, - number=90, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_id', - full_name='spotify.SystemInfo.device_id', - index=9, - number=100, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1017, - serialized_end=1274, -) - -_LIBSPOTIFYAPPKEY = _descriptor.Descriptor( - name='LibspotifyAppKey', - full_name='spotify.LibspotifyAppKey', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='version', - full_name='spotify.LibspotifyAppKey.version', - index=0, - number=1, - type=13, - cpp_type=3, - label=2, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='devkey', - full_name='spotify.LibspotifyAppKey.devkey', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='signature', - full_name='spotify.LibspotifyAppKey.signature', - index=2, - number=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='useragent', - full_name='spotify.LibspotifyAppKey.useragent', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='callback_hash', - full_name='spotify.LibspotifyAppKey.callback_hash', - index=4, - number=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1276, - serialized_end=1388, -) - -_CLIENTINFO = _descriptor.Descriptor( - name='ClientInfo', - full_name='spotify.ClientInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='limited', - full_name='spotify.ClientInfo.limited', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fb', - full_name='spotify.ClientInfo.fb', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='language', - full_name='spotify.ClientInfo.language', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1390, - serialized_end=1478, -) - -_CLIENTINFOFACEBOOK = _descriptor.Descriptor( - name='ClientInfoFacebook', - full_name='spotify.ClientInfoFacebook', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='machine_id', - full_name='spotify.ClientInfoFacebook.machine_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1480, - serialized_end=1520, -) - -_APWELCOME = _descriptor.Descriptor( - name='APWelcome', - full_name='spotify.APWelcome', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='canonical_username', - full_name='spotify.APWelcome.canonical_username', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='account_type_logged_in', - full_name='spotify.APWelcome.account_type_logged_in', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='credentials_type_logged_in', - full_name='spotify.APWelcome.credentials_type_logged_in', - index=2, - number=25, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reusable_auth_credentials_type', - full_name='spotify.APWelcome.reusable_auth_credentials_type', - index=3, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reusable_auth_credentials', - full_name='spotify.APWelcome.reusable_auth_credentials', - index=4, - number=40, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='lfs_secret', - full_name='spotify.APWelcome.lfs_secret', - index=5, - number=50, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='account_info', - full_name='spotify.APWelcome.account_info', - index=6, - number=60, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fb', - full_name='spotify.APWelcome.fb', - index=7, - number=70, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1523, - serialized_end=1884, -) - -_ACCOUNTINFO = _descriptor.Descriptor( - name='AccountInfo', - full_name='spotify.AccountInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='spotify', - full_name='spotify.AccountInfo.spotify', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='facebook', - full_name='spotify.AccountInfo.facebook', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1886, - serialized_end=1993, -) - -_ACCOUNTINFOSPOTIFY = _descriptor.Descriptor( - name='AccountInfoSpotify', - full_name='spotify.AccountInfoSpotify', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1995, - serialized_end=2015, -) - -_ACCOUNTINFOFACEBOOK = _descriptor.Descriptor( - name='AccountInfoFacebook', - full_name='spotify.AccountInfoFacebook', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='access_token', - full_name='spotify.AccountInfoFacebook.access_token', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='machine_id', - full_name='spotify.AccountInfoFacebook.machine_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2017, - serialized_end=2080, -) - -_CLIENTRESPONSEENCRYPTED.fields_by_name[ - 'login_credentials'].message_type = _LOGINCREDENTIALS -_CLIENTRESPONSEENCRYPTED.fields_by_name[ - 'account_creation'].enum_type = _ACCOUNTCREATION -_CLIENTRESPONSEENCRYPTED.fields_by_name[ - 'fingerprint_response'].message_type = _FINGERPRINTRESPONSEUNION -_CLIENTRESPONSEENCRYPTED.fields_by_name[ - 'peer_ticket'].message_type = _PEERTICKETUNION -_CLIENTRESPONSEENCRYPTED.fields_by_name[ - 'system_info'].message_type = _SYSTEMINFO -_CLIENTRESPONSEENCRYPTED.fields_by_name[ - 'appkey'].message_type = _LIBSPOTIFYAPPKEY -_CLIENTRESPONSEENCRYPTED.fields_by_name[ - 'client_info'].message_type = _CLIENTINFO -_LOGINCREDENTIALS.fields_by_name['typ'].enum_type = _AUTHENTICATIONTYPE -_FINGERPRINTRESPONSEUNION.fields_by_name[ - 'grain'].message_type = _FINGERPRINTGRAINRESPONSE -_FINGERPRINTRESPONSEUNION.fields_by_name[ - 'hmac_ripemd'].message_type = _FINGERPRINTHMACRIPEMDRESPONSE -_PEERTICKETUNION.fields_by_name[ - 'public_key'].message_type = _PEERTICKETPUBLICKEY -_PEERTICKETUNION.fields_by_name['old_ticket'].message_type = _PEERTICKETOLD -_SYSTEMINFO.fields_by_name['cpu_family'].enum_type = _CPUFAMILY -_SYSTEMINFO.fields_by_name['brand'].enum_type = _BRAND -_SYSTEMINFO.fields_by_name['os'].enum_type = _OS -_CLIENTINFO.fields_by_name['fb'].message_type = _CLIENTINFOFACEBOOK -_APWELCOME.fields_by_name['account_type_logged_in'].enum_type = _ACCOUNTTYPE -_APWELCOME.fields_by_name[ - 'credentials_type_logged_in'].enum_type = _ACCOUNTTYPE -_APWELCOME.fields_by_name[ - 'reusable_auth_credentials_type'].enum_type = _AUTHENTICATIONTYPE -_APWELCOME.fields_by_name['account_info'].message_type = _ACCOUNTINFO -_APWELCOME.fields_by_name['fb'].message_type = _ACCOUNTINFOFACEBOOK -_ACCOUNTINFO.fields_by_name['spotify'].message_type = _ACCOUNTINFOSPOTIFY -_ACCOUNTINFO.fields_by_name['facebook'].message_type = _ACCOUNTINFOFACEBOOK -DESCRIPTOR.message_types_by_name[ - 'ClientResponseEncrypted'] = _CLIENTRESPONSEENCRYPTED -DESCRIPTOR.message_types_by_name['LoginCredentials'] = _LOGINCREDENTIALS -DESCRIPTOR.message_types_by_name[ - 'FingerprintResponseUnion'] = _FINGERPRINTRESPONSEUNION -DESCRIPTOR.message_types_by_name[ - 'FingerprintGrainResponse'] = _FINGERPRINTGRAINRESPONSE -DESCRIPTOR.message_types_by_name[ - 'FingerprintHmacRipemdResponse'] = _FINGERPRINTHMACRIPEMDRESPONSE -DESCRIPTOR.message_types_by_name['PeerTicketUnion'] = _PEERTICKETUNION -DESCRIPTOR.message_types_by_name['PeerTicketPublicKey'] = _PEERTICKETPUBLICKEY -DESCRIPTOR.message_types_by_name['PeerTicketOld'] = _PEERTICKETOLD -DESCRIPTOR.message_types_by_name['SystemInfo'] = _SYSTEMINFO -DESCRIPTOR.message_types_by_name['LibspotifyAppKey'] = _LIBSPOTIFYAPPKEY -DESCRIPTOR.message_types_by_name['ClientInfo'] = _CLIENTINFO -DESCRIPTOR.message_types_by_name['ClientInfoFacebook'] = _CLIENTINFOFACEBOOK -DESCRIPTOR.message_types_by_name['APWelcome'] = _APWELCOME -DESCRIPTOR.message_types_by_name['AccountInfo'] = _ACCOUNTINFO -DESCRIPTOR.message_types_by_name['AccountInfoSpotify'] = _ACCOUNTINFOSPOTIFY -DESCRIPTOR.message_types_by_name['AccountInfoFacebook'] = _ACCOUNTINFOFACEBOOK -DESCRIPTOR.enum_types_by_name['AuthenticationType'] = _AUTHENTICATIONTYPE -DESCRIPTOR.enum_types_by_name['AccountCreation'] = _ACCOUNTCREATION -DESCRIPTOR.enum_types_by_name['CpuFamily'] = _CPUFAMILY -DESCRIPTOR.enum_types_by_name['Brand'] = _BRAND -DESCRIPTOR.enum_types_by_name['Os'] = _OS -DESCRIPTOR.enum_types_by_name['AccountType'] = _ACCOUNTTYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -ClientResponseEncrypted = _reflection.GeneratedProtocolMessageType( - 'ClientResponseEncrypted', - (_message.Message, ), - { - 'DESCRIPTOR': _CLIENTRESPONSEENCRYPTED, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.ClientResponseEncrypted) - }) -_sym_db.RegisterMessage(ClientResponseEncrypted) - -LoginCredentials = _reflection.GeneratedProtocolMessageType( - 'LoginCredentials', - (_message.Message, ), - { - 'DESCRIPTOR': _LOGINCREDENTIALS, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.LoginCredentials) - }) -_sym_db.RegisterMessage(LoginCredentials) - -FingerprintResponseUnion = _reflection.GeneratedProtocolMessageType( - 'FingerprintResponseUnion', - (_message.Message, ), - { - 'DESCRIPTOR': _FINGERPRINTRESPONSEUNION, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.FingerprintResponseUnion) - }) -_sym_db.RegisterMessage(FingerprintResponseUnion) - -FingerprintGrainResponse = _reflection.GeneratedProtocolMessageType( - 'FingerprintGrainResponse', - (_message.Message, ), - { - 'DESCRIPTOR': _FINGERPRINTGRAINRESPONSE, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.FingerprintGrainResponse) - }) -_sym_db.RegisterMessage(FingerprintGrainResponse) - -FingerprintHmacRipemdResponse = _reflection.GeneratedProtocolMessageType( - 'FingerprintHmacRipemdResponse', - (_message.Message, ), - { - 'DESCRIPTOR': _FINGERPRINTHMACRIPEMDRESPONSE, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.FingerprintHmacRipemdResponse) - }) -_sym_db.RegisterMessage(FingerprintHmacRipemdResponse) - -PeerTicketUnion = _reflection.GeneratedProtocolMessageType( - 'PeerTicketUnion', - (_message.Message, ), - { - 'DESCRIPTOR': _PEERTICKETUNION, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.PeerTicketUnion) - }) -_sym_db.RegisterMessage(PeerTicketUnion) - -PeerTicketPublicKey = _reflection.GeneratedProtocolMessageType( - 'PeerTicketPublicKey', - (_message.Message, ), - { - 'DESCRIPTOR': _PEERTICKETPUBLICKEY, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.PeerTicketPublicKey) - }) -_sym_db.RegisterMessage(PeerTicketPublicKey) - -PeerTicketOld = _reflection.GeneratedProtocolMessageType( - 'PeerTicketOld', - (_message.Message, ), - { - 'DESCRIPTOR': _PEERTICKETOLD, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.PeerTicketOld) - }) -_sym_db.RegisterMessage(PeerTicketOld) - -SystemInfo = _reflection.GeneratedProtocolMessageType( - 'SystemInfo', - (_message.Message, ), - { - 'DESCRIPTOR': _SYSTEMINFO, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.SystemInfo) - }) -_sym_db.RegisterMessage(SystemInfo) - -LibspotifyAppKey = _reflection.GeneratedProtocolMessageType( - 'LibspotifyAppKey', - (_message.Message, ), - { - 'DESCRIPTOR': _LIBSPOTIFYAPPKEY, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.LibspotifyAppKey) - }) -_sym_db.RegisterMessage(LibspotifyAppKey) - -ClientInfo = _reflection.GeneratedProtocolMessageType( - 'ClientInfo', - (_message.Message, ), - { - 'DESCRIPTOR': _CLIENTINFO, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.ClientInfo) - }) -_sym_db.RegisterMessage(ClientInfo) - -ClientInfoFacebook = _reflection.GeneratedProtocolMessageType( - 'ClientInfoFacebook', - (_message.Message, ), - { - 'DESCRIPTOR': _CLIENTINFOFACEBOOK, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.ClientInfoFacebook) - }) -_sym_db.RegisterMessage(ClientInfoFacebook) - -APWelcome = _reflection.GeneratedProtocolMessageType( - 'APWelcome', - (_message.Message, ), - { - 'DESCRIPTOR': _APWELCOME, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.APWelcome) - }) -_sym_db.RegisterMessage(APWelcome) - -AccountInfo = _reflection.GeneratedProtocolMessageType( - 'AccountInfo', - (_message.Message, ), - { - 'DESCRIPTOR': _ACCOUNTINFO, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.AccountInfo) - }) -_sym_db.RegisterMessage(AccountInfo) - -AccountInfoSpotify = _reflection.GeneratedProtocolMessageType( - 'AccountInfoSpotify', - (_message.Message, ), - { - 'DESCRIPTOR': _ACCOUNTINFOSPOTIFY, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.AccountInfoSpotify) - }) -_sym_db.RegisterMessage(AccountInfoSpotify) - -AccountInfoFacebook = _reflection.GeneratedProtocolMessageType( - 'AccountInfoFacebook', - (_message.Message, ), - { - 'DESCRIPTOR': _ACCOUNTINFOFACEBOOK, - '__module__': 'authentication_pb2' - # @@protoc_insertion_point(class_scope:spotify.AccountInfoFacebook) - }) -_sym_db.RegisterMessage(AccountInfoFacebook) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/CanvazMeta_pb2.py b/librespot/proto/CanvazMeta_pb2.py deleted file mode 100644 index 3b769fc..0000000 --- a/librespot/proto/CanvazMeta_pb2.py +++ /dev/null @@ -1,91 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: canvaz-meta.proto -"""Generated protocol buffer code.""" -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.internal import enum_type_wrapper - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="canvaz-meta.proto", - package="com.spotify.canvaz", - syntax="proto3", - serialized_options=b"\n\022com.spotify.canvazH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b"\n\x11\x63\x61nvaz-meta.proto\x12\x12\x63om.spotify.canvaz*R\n\x04Type\x12\t\n\x05IMAGE\x10\x00\x12\t\n\x05VIDEO\x10\x01\x12\x11\n\rVIDEO_LOOPING\x10\x02\x12\x18\n\x14VIDEO_LOOPING_RANDOM\x10\x03\x12\x07\n\x03GIF\x10\x04\x42\x16\n\x12\x63om.spotify.canvazH\x02\x62\x06proto3", -) - -_TYPE = _descriptor.EnumDescriptor( - name="Type", - full_name="com.spotify.canvaz.Type", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="IMAGE", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="VIDEO", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="VIDEO_LOOPING", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="VIDEO_LOOPING_RANDOM", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="GIF", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=41, - serialized_end=123, -) -_sym_db.RegisterEnumDescriptor(_TYPE) - -Type = enum_type_wrapper.EnumTypeWrapper(_TYPE) -IMAGE = 0 -VIDEO = 1 -VIDEO_LOOPING = 2 -VIDEO_LOOPING_RANDOM = 3 -GIF = 4 - -DESCRIPTOR.enum_types_by_name["Type"] = _TYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Canvaz_pb2.py b/librespot/proto/Canvaz_pb2.py deleted file mode 100644 index 07f31b4..0000000 --- a/librespot/proto/Canvaz_pb2.py +++ /dev/null @@ -1,564 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: canvaz.proto -"""Generated protocol buffer code.""" -import CanvazMeta_pb2 as canvaz__meta__pb2 -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="canvaz.proto", - package="com.spotify.canvazcache", - syntax="proto3", - serialized_options=b"\n\022com.spotify.canvazH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x0c\x63\x61nvaz.proto\x12\x17\x63om.spotify.canvazcache\x1a\x11\x63\x61nvaz-meta.proto"3\n\x06\x41rtist\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06\x61vatar\x18\x03 \x01(\t"\xe1\x02\n\x14\x45ntityCanvazResponse\x12\x46\n\x08\x63\x61nvases\x18\x01 \x03(\x0b\x32\x34.com.spotify.canvazcache.EntityCanvazResponse.Canvaz\x12\x16\n\x0ettl_in_seconds\x18\x02 \x01(\x03\x1a\xe8\x01\n\x06\x43\x61nvaz\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0f\n\x07\x66ile_id\x18\x03 \x01(\t\x12&\n\x04type\x18\x04 \x01(\x0e\x32\x18.com.spotify.canvaz.Type\x12\x12\n\nentity_uri\x18\x05 \x01(\t\x12/\n\x06\x61rtist\x18\x06 \x01(\x0b\x32\x1f.com.spotify.canvazcache.Artist\x12\x10\n\x08\x65xplicit\x18\x07 \x01(\x08\x12\x13\n\x0buploaded_by\x18\x08 \x01(\t\x12\x0c\n\x04\x65tag\x18\t \x01(\t\x12\x12\n\ncanvas_uri\x18\x0b \x01(\t"\x88\x01\n\x13\x45ntityCanvazRequest\x12\x45\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x33.com.spotify.canvazcache.EntityCanvazRequest.Entity\x1a*\n\x06\x45ntity\x12\x12\n\nentity_uri\x18\x01 \x01(\t\x12\x0c\n\x04\x65tag\x18\x02 \x01(\tB\x16\n\x12\x63om.spotify.canvazH\x02\x62\x06proto3', - dependencies=[ - canvaz__meta__pb2.DESCRIPTOR, - ], -) - -_ARTIST = _descriptor.Descriptor( - name="Artist", - full_name="com.spotify.canvazcache.Artist", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="uri", - full_name="com.spotify.canvazcache.Artist.uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="name", - full_name="com.spotify.canvazcache.Artist.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="avatar", - full_name="com.spotify.canvazcache.Artist.avatar", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=60, - serialized_end=111, -) - -_ENTITYCANVAZRESPONSE_CANVAZ = _descriptor.Descriptor( - name="Canvaz", - full_name="com.spotify.canvazcache.EntityCanvazResponse.Canvaz", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="id", - full_name="com.spotify.canvazcache.EntityCanvazResponse.Canvaz.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="url", - full_name="com.spotify.canvazcache.EntityCanvazResponse.Canvaz.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="file_id", - full_name= - "com.spotify.canvazcache.EntityCanvazResponse.Canvaz.file_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="type", - full_name= - "com.spotify.canvazcache.EntityCanvazResponse.Canvaz.type", - index=3, - number=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="entity_uri", - full_name= - "com.spotify.canvazcache.EntityCanvazResponse.Canvaz.entity_uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="artist", - full_name= - "com.spotify.canvazcache.EntityCanvazResponse.Canvaz.artist", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="explicit", - full_name= - "com.spotify.canvazcache.EntityCanvazResponse.Canvaz.explicit", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="uploaded_by", - full_name= - "com.spotify.canvazcache.EntityCanvazResponse.Canvaz.uploaded_by", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="etag", - full_name= - "com.spotify.canvazcache.EntityCanvazResponse.Canvaz.etag", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="canvas_uri", - full_name= - "com.spotify.canvazcache.EntityCanvazResponse.Canvaz.canvas_uri", - index=9, - number=11, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=235, - serialized_end=467, -) - -_ENTITYCANVAZRESPONSE = _descriptor.Descriptor( - name="EntityCanvazResponse", - full_name="com.spotify.canvazcache.EntityCanvazResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="canvases", - full_name="com.spotify.canvazcache.EntityCanvazResponse.canvases", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="ttl_in_seconds", - full_name= - "com.spotify.canvazcache.EntityCanvazResponse.ttl_in_seconds", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _ENTITYCANVAZRESPONSE_CANVAZ, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=114, - serialized_end=467, -) - -_ENTITYCANVAZREQUEST_ENTITY = _descriptor.Descriptor( - name="Entity", - full_name="com.spotify.canvazcache.EntityCanvazRequest.Entity", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="entity_uri", - full_name= - "com.spotify.canvazcache.EntityCanvazRequest.Entity.entity_uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="etag", - full_name="com.spotify.canvazcache.EntityCanvazRequest.Entity.etag", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=564, - serialized_end=606, -) - -_ENTITYCANVAZREQUEST = _descriptor.Descriptor( - name="EntityCanvazRequest", - full_name="com.spotify.canvazcache.EntityCanvazRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="entities", - full_name="com.spotify.canvazcache.EntityCanvazRequest.entities", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _ENTITYCANVAZREQUEST_ENTITY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=470, - serialized_end=606, -) - -_ENTITYCANVAZRESPONSE_CANVAZ.fields_by_name[ - "type"].enum_type = canvaz__meta__pb2._TYPE -_ENTITYCANVAZRESPONSE_CANVAZ.fields_by_name["artist"].message_type = _ARTIST -_ENTITYCANVAZRESPONSE_CANVAZ.containing_type = _ENTITYCANVAZRESPONSE -_ENTITYCANVAZRESPONSE.fields_by_name[ - "canvases"].message_type = _ENTITYCANVAZRESPONSE_CANVAZ -_ENTITYCANVAZREQUEST_ENTITY.containing_type = _ENTITYCANVAZREQUEST -_ENTITYCANVAZREQUEST.fields_by_name[ - "entities"].message_type = _ENTITYCANVAZREQUEST_ENTITY -DESCRIPTOR.message_types_by_name["Artist"] = _ARTIST -DESCRIPTOR.message_types_by_name[ - "EntityCanvazResponse"] = _ENTITYCANVAZRESPONSE -DESCRIPTOR.message_types_by_name["EntityCanvazRequest"] = _ENTITYCANVAZREQUEST -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Artist = _reflection.GeneratedProtocolMessageType( - "Artist", - (_message.Message, ), - { - "DESCRIPTOR": _ARTIST, - "__module__": "canvaz_pb2" - # @@protoc_insertion_point(class_scope:com.spotify.canvazcache.Artist) - }, -) -_sym_db.RegisterMessage(Artist) - -EntityCanvazResponse = _reflection.GeneratedProtocolMessageType( - "EntityCanvazResponse", - (_message.Message, ), - { - "Canvaz": - _reflection.GeneratedProtocolMessageType( - "Canvaz", - (_message.Message, ), - { - "DESCRIPTOR": _ENTITYCANVAZRESPONSE_CANVAZ, - "__module__": "canvaz_pb2" - # @@protoc_insertion_point(class_scope:com.spotify.canvazcache.EntityCanvazResponse.Canvaz) - }, - ), - "DESCRIPTOR": - _ENTITYCANVAZRESPONSE, - "__module__": - "canvaz_pb2" - # @@protoc_insertion_point(class_scope:com.spotify.canvazcache.EntityCanvazResponse) - }, -) -_sym_db.RegisterMessage(EntityCanvazResponse) -_sym_db.RegisterMessage(EntityCanvazResponse.Canvaz) - -EntityCanvazRequest = _reflection.GeneratedProtocolMessageType( - "EntityCanvazRequest", - (_message.Message, ), - { - "Entity": - _reflection.GeneratedProtocolMessageType( - "Entity", - (_message.Message, ), - { - "DESCRIPTOR": _ENTITYCANVAZREQUEST_ENTITY, - "__module__": "canvaz_pb2" - # @@protoc_insertion_point(class_scope:com.spotify.canvazcache.EntityCanvazRequest.Entity) - }, - ), - "DESCRIPTOR": - _ENTITYCANVAZREQUEST, - "__module__": - "canvaz_pb2" - # @@protoc_insertion_point(class_scope:com.spotify.canvazcache.EntityCanvazRequest) - }, -) -_sym_db.RegisterMessage(EntityCanvazRequest) -_sym_db.RegisterMessage(EntityCanvazRequest.Entity) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/ClientToken_pb2.py b/librespot/proto/ClientToken_pb2.py deleted file mode 100644 index 2b7e954..0000000 --- a/librespot/proto/ClientToken_pb2.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: client_token.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from librespot.proto import Connectivity_pb2 as connectivity__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12\x63lient_token.proto\x12\x1bspotify.clienttoken.http.v0\x1a\x12\x63onnectivity.proto\"\x84\x02\n\x12\x43lientTokenRequest\x12I\n\x0crequest_type\x18\x01 \x01(\x0e\x32\x33.spotify.clienttoken.http.v0.ClientTokenRequestType\x12\x45\n\x0b\x63lient_data\x18\x02 \x01(\x0b\x32..spotify.clienttoken.http.v0.ClientDataRequestH\x00\x12Q\n\x11\x63hallenge_answers\x18\x03 \x01(\x0b\x32\x34.spotify.clienttoken.http.v0.ChallengeAnswersRequestH\x00\x42\t\n\x07request\"\x99\x01\n\x11\x43lientDataRequest\x12\x16\n\x0e\x63lient_version\x18\x01 \x01(\t\x12\x11\n\tclient_id\x18\x02 \x01(\t\x12Q\n\x15\x63onnectivity_sdk_data\x18\x03 \x01(\x0b\x32\x30.spotify.clienttoken.data.v0.ConnectivitySdkDataH\x00\x42\x06\n\x04\x64\x61ta\"g\n\x17\x43hallengeAnswersRequest\x12\r\n\x05state\x18\x01 \x01(\t\x12=\n\x07\x61nswers\x18\x02 \x03(\x0b\x32,.spotify.clienttoken.http.v0.ChallengeAnswer\"\x81\x02\n\x13\x43lientTokenResponse\x12K\n\rresponse_type\x18\x01 \x01(\x0e\x32\x34.spotify.clienttoken.http.v0.ClientTokenResponseType\x12J\n\rgranted_token\x18\x02 \x01(\x0b\x32\x31.spotify.clienttoken.http.v0.GrantedTokenResponseH\x00\x12\x45\n\nchallenges\x18\x03 \x01(\x0b\x32/.spotify.clienttoken.http.v0.ChallengesResponseH\x00\x42\n\n\x08response\"\x1d\n\x0bTokenDomain\x12\x0e\n\x06\x64omain\x18\x01 \x01(\t\"\x9e\x01\n\x14GrantedTokenResponse\x12\r\n\x05token\x18\x01 \x01(\t\x12\x1d\n\x15\x65xpires_after_seconds\x18\x02 \x01(\x05\x12\x1d\n\x15refresh_after_seconds\x18\x03 \x01(\x05\x12\x39\n\x07\x64omains\x18\x04 \x03(\x0b\x32(.spotify.clienttoken.http.v0.TokenDomain\"_\n\x12\x43hallengesResponse\x12\r\n\x05state\x18\x01 \x01(\t\x12:\n\nchallenges\x18\x02 \x03(\x0b\x32&.spotify.clienttoken.http.v0.Challenge\"&\n\x16\x43lientSecretParameters\x12\x0c\n\x04salt\x18\x01 \x01(\t\"7\n\x14\x45valuateJSParameters\x12\x0c\n\x04\x63ode\x18\x01 \x01(\t\x12\x11\n\tlibraries\x18\x02 \x03(\t\"4\n\x12HashCashParameters\x12\x0e\n\x06length\x18\x01 \x01(\x05\x12\x0e\n\x06prefix\x18\x02 \x01(\t\"\xda\x02\n\tChallenge\x12\x38\n\x04type\x18\x01 \x01(\x0e\x32*.spotify.clienttoken.http.v0.ChallengeType\x12W\n\x18\x63lient_secret_parameters\x18\x02 \x01(\x0b\x32\x33.spotify.clienttoken.http.v0.ClientSecretParametersH\x00\x12S\n\x16\x65valuate_js_parameters\x18\x03 \x01(\x0b\x32\x31.spotify.clienttoken.http.v0.EvaluateJSParametersH\x00\x12W\n\x1c\x65valuate_hashcash_parameters\x18\x04 \x01(\x0b\x32/.spotify.clienttoken.http.v0.HashCashParametersH\x00\x42\x0c\n\nparameters\"&\n\x16\x43lientSecretHMACAnswer\x12\x0c\n\x04hmac\x18\x01 \x01(\t\"\"\n\x10\x45valuateJSAnswer\x12\x0e\n\x06result\x18\x01 \x01(\t\" \n\x0eHashCashAnswer\x12\x0e\n\x06suffix\x18\x01 \x01(\t\"\xb4\x02\n\x0f\x43hallengeAnswer\x12\x41\n\rChallengeType\x18\x01 \x01(\x0e\x32*.spotify.clienttoken.http.v0.ChallengeType\x12L\n\rclient_secret\x18\x02 \x01(\x0b\x32\x33.spotify.clienttoken.http.v0.ClientSecretHMACAnswerH\x00\x12\x44\n\x0b\x65valuate_js\x18\x03 \x01(\x0b\x32-.spotify.clienttoken.http.v0.EvaluateJSAnswerH\x00\x12@\n\thash_cash\x18\x04 \x01(\x0b\x32+.spotify.clienttoken.http.v0.HashCashAnswerH\x00\x42\x08\n\x06\x61nswer\"(\n\x15\x43lientTokenBadRequest\x12\x0f\n\x07message\x18\x01 \x01(\t*u\n\x16\x43lientTokenRequestType\x12\x13\n\x0fREQUEST_UNKNOWN\x10\x00\x12\x1f\n\x1bREQUEST_CLIENT_DATA_REQUEST\x10\x01\x12%\n!REQUEST_CHALLENGE_ANSWERS_REQUEST\x10\x02*v\n\x17\x43lientTokenResponseType\x12\x14\n\x10RESPONSE_UNKNOWN\x10\x00\x12#\n\x1fRESPONSE_GRANTED_TOKEN_RESPONSE\x10\x01\x12 \n\x1cRESPONSE_CHALLENGES_RESPONSE\x10\x02*|\n\rChallengeType\x12\x15\n\x11\x43HALLENGE_UNKNOWN\x10\x00\x12 \n\x1c\x43HALLENGE_CLIENT_SECRET_HMAC\x10\x01\x12\x19\n\x15\x43HALLENGE_EVALUATE_JS\x10\x02\x12\x17\n\x13\x43HALLENGE_HASH_CASH\x10\x03\x42#\n\x1f\x63om.spotify.clienttoken.http.v0H\x02\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'client_token_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\037com.spotify.clienttoken.http.v0H\002' - _CLIENTTOKENREQUESTTYPE._serialized_start=2107 - _CLIENTTOKENREQUESTTYPE._serialized_end=2224 - _CLIENTTOKENRESPONSETYPE._serialized_start=2226 - _CLIENTTOKENRESPONSETYPE._serialized_end=2344 - _CHALLENGETYPE._serialized_start=2346 - _CHALLENGETYPE._serialized_end=2470 - _CLIENTTOKENREQUEST._serialized_start=72 - _CLIENTTOKENREQUEST._serialized_end=332 - _CLIENTDATAREQUEST._serialized_start=335 - _CLIENTDATAREQUEST._serialized_end=488 - _CHALLENGEANSWERSREQUEST._serialized_start=490 - _CHALLENGEANSWERSREQUEST._serialized_end=593 - _CLIENTTOKENRESPONSE._serialized_start=596 - _CLIENTTOKENRESPONSE._serialized_end=853 - _TOKENDOMAIN._serialized_start=855 - _TOKENDOMAIN._serialized_end=884 - _GRANTEDTOKENRESPONSE._serialized_start=887 - _GRANTEDTOKENRESPONSE._serialized_end=1045 - _CHALLENGESRESPONSE._serialized_start=1047 - _CHALLENGESRESPONSE._serialized_end=1142 - _CLIENTSECRETPARAMETERS._serialized_start=1144 - _CLIENTSECRETPARAMETERS._serialized_end=1182 - _EVALUATEJSPARAMETERS._serialized_start=1184 - _EVALUATEJSPARAMETERS._serialized_end=1239 - _HASHCASHPARAMETERS._serialized_start=1241 - _HASHCASHPARAMETERS._serialized_end=1293 - _CHALLENGE._serialized_start=1296 - _CHALLENGE._serialized_end=1642 - _CLIENTSECRETHMACANSWER._serialized_start=1644 - _CLIENTSECRETHMACANSWER._serialized_end=1682 - _EVALUATEJSANSWER._serialized_start=1684 - _EVALUATEJSANSWER._serialized_end=1718 - _HASHCASHANSWER._serialized_start=1720 - _HASHCASHANSWER._serialized_end=1752 - _CHALLENGEANSWER._serialized_start=1755 - _CHALLENGEANSWER._serialized_end=2063 - _CLIENTTOKENBADREQUEST._serialized_start=2065 - _CLIENTTOKENBADREQUEST._serialized_end=2105 -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Connect_pb2.py b/librespot/proto/Connect_pb2.py deleted file mode 100644 index f356a1c..0000000 --- a/librespot/proto/Connect_pb2.py +++ /dev/null @@ -1,2340 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: connect.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import enum_type_wrapper -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 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -import librespot.proto.Player_pb2 as player__pb2 - -DESCRIPTOR = _descriptor.FileDescriptor( - name='connect.proto', - package='connectstate', - syntax='proto3', - serialized_options=b'\n\030com.spotify.connectstateH\002', - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\rconnect.proto\x12\x0c\x63onnectstate\x1a\x0cplayer.proto\"\x9f\x01\n\rClusterUpdate\x12&\n\x07\x63luster\x18\x01 \x01(\x0b\x32\x15.connectstate.Cluster\x12\x38\n\rupdate_reason\x18\x02 \x01(\x0e\x32!.connectstate.ClusterUpdateReason\x12\x0e\n\x06\x61\x63k_id\x18\x03 \x01(\t\x12\x1c\n\x14\x64\x65vices_that_changed\x18\x04 \x03(\t\"\xa6\x01\n\x06\x44\x65vice\x12-\n\x0b\x64\x65vice_info\x18\x01 \x01(\x0b\x32\x18.connectstate.DeviceInfo\x12/\n\x0cplayer_state\x18\x02 \x01(\x0b\x32\x19.connectstate.PlayerState\x12<\n\x13private_device_info\x18\x03 \x01(\x0b\x32\x1f.connectstate.PrivateDeviceInfo\"\xfa\x01\n\x07\x43luster\x12\x11\n\ttimestamp\x18\x01 \x01(\x03\x12\x18\n\x10\x61\x63tive_device_id\x18\x02 \x01(\t\x12/\n\x0cplayer_state\x18\x03 \x01(\x0b\x32\x19.connectstate.PlayerState\x12\x31\n\x06\x64\x65vice\x18\x04 \x03(\x0b\x32!.connectstate.Cluster.DeviceEntry\x12\x15\n\rtransfer_data\x18\x05 \x01(\x0c\x1aG\n\x0b\x44\x65viceEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\'\n\x05value\x18\x02 \x01(\x0b\x32\x18.connectstate.DeviceInfo:\x02\x38\x01\"\xa1\x03\n\x0fPutStateRequest\x12\x14\n\x0c\x63\x61llback_url\x18\x01 \x01(\t\x12$\n\x06\x64\x65vice\x18\x02 \x01(\x0b\x32\x14.connectstate.Device\x12-\n\x0bmember_type\x18\x03 \x01(\x0e\x32\x18.connectstate.MemberType\x12\x11\n\tis_active\x18\x04 \x01(\x08\x12\x36\n\x10put_state_reason\x18\x05 \x01(\x0e\x32\x1c.connectstate.PutStateReason\x12\x12\n\nmessage_id\x18\x06 \x01(\r\x12&\n\x1elast_command_sent_by_device_id\x18\x07 \x01(\t\x12\x1f\n\x17last_command_message_id\x18\x08 \x01(\r\x12\x1a\n\x12started_playing_at\x18\t \x01(\x04\x12\x1f\n\x17has_been_playing_for_ms\x18\x0b \x01(\x04\x12\x1d\n\x15\x63lient_side_timestamp\x18\x0c \x01(\x04\x12\x1f\n\x17only_write_player_state\x18\r \x01(\x08\"%\n\x11PrivateDeviceInfo\x12\x10\n\x08platform\x18\x01 \x01(\t\"(\n\x10SubscribeRequest\x12\x14\n\x0c\x63\x61llback_url\x18\x01 \x01(\t\"\xc5\x03\n\nDeviceInfo\x12\x10\n\x08\x63\x61n_play\x18\x01 \x01(\x08\x12\x0e\n\x06volume\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x30\n\x0c\x63\x61pabilities\x18\x04 \x01(\x0b\x32\x1a.connectstate.Capabilities\x12\x1f\n\x17\x64\x65vice_software_version\x18\x06 \x01(\t\x12-\n\x0b\x64\x65vice_type\x18\x07 \x01(\x0e\x32\x18.connectstate.DeviceType\x12\x15\n\rspirc_version\x18\t \x01(\t\x12\x11\n\tdevice_id\x18\n \x01(\t\x12\x1a\n\x12is_private_session\x18\x0b \x01(\x08\x12\x19\n\x11is_social_connect\x18\x0c \x01(\x08\x12\x11\n\tclient_id\x18\r \x01(\t\x12\r\n\x05\x62rand\x18\x0e \x01(\t\x12\r\n\x05model\x18\x0f \x01(\t\x12?\n\x0cmetadata_map\x18\x10 \x03(\x0b\x32).connectstate.DeviceInfo.MetadataMapEntry\x1a\x32\n\x10MetadataMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xcc\x04\n\x0c\x43\x61pabilities\x12\x15\n\rcan_be_player\x18\x02 \x01(\x08\x12\x19\n\x11restrict_to_local\x18\x03 \x01(\x08\x12\x1a\n\x12gaia_eq_connect_id\x18\x05 \x01(\x08\x12\x17\n\x0fsupports_logout\x18\x06 \x01(\x08\x12\x15\n\ris_observable\x18\x07 \x01(\x08\x12\x14\n\x0cvolume_steps\x18\x08 \x01(\x05\x12\x17\n\x0fsupported_types\x18\t \x03(\t\x12\x14\n\x0c\x63ommand_acks\x18\n \x01(\x08\x12\x17\n\x0fsupports_rename\x18\x0b \x01(\x08\x12\x0e\n\x06hidden\x18\x0c \x01(\x08\x12\x16\n\x0e\x64isable_volume\x18\r \x01(\x08\x12\x18\n\x10\x63onnect_disabled\x18\x0e \x01(\x08\x12\x1c\n\x14supports_playlist_v2\x18\x0f \x01(\x08\x12\x17\n\x0fis_controllable\x18\x10 \x01(\x08\x12\"\n\x1asupports_external_episodes\x18\x11 \x01(\x08\x12%\n\x1dsupports_set_backend_metadata\x18\x12 \x01(\x08\x12!\n\x19supports_transfer_command\x18\x13 \x01(\x08\x12 \n\x18supports_command_request\x18\x14 \x01(\x08\x12\x18\n\x10is_voice_enabled\x18\x15 \x01(\x08\x12\x1f\n\x17needs_full_player_state\x18\x16 \x01(\x08\x12\x1c\n\x14supports_gzip_pushes\x18\x17 \x01(\x08\"+\n\x15\x43onnectCommandOptions\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\"M\n\rLogoutCommand\x12<\n\x0f\x63ommand_options\x18\x01 \x01(\x0b\x32#.connectstate.ConnectCommandOptions\"`\n\x10SetVolumeCommand\x12\x0e\n\x06volume\x18\x01 \x01(\x05\x12<\n\x0f\x63ommand_options\x18\x02 \x01(\x0b\x32#.connectstate.ConnectCommandOptions\"`\n\rRenameCommand\x12\x11\n\trename_to\x18\x01 \x01(\t\x12<\n\x0f\x63ommand_options\x18\x02 \x01(\x0b\x32#.connectstate.ConnectCommandOptions\"\x95\x01\n\x19SetBackendMetadataCommand\x12G\n\x08metadata\x18\x01 \x03(\x0b\x32\x35.connectstate.SetBackendMetadataCommand.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01*\xd4\x01\n\x11SendCommandResult\x12\x1f\n\x1bUNKNOWN_SEND_COMMAND_RESULT\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x14\n\x10\x44\x45VICE_NOT_FOUND\x10\x02\x12\x18\n\x14\x43ONTEXT_PLAYER_ERROR\x10\x03\x12\x16\n\x12\x44\x45VICE_DISAPPEARED\x10\x04\x12\x12\n\x0eUPSTREAM_ERROR\x10\x05\x12#\n\x1f\x44\x45VICE_DOES_NOT_SUPPORT_COMMAND\x10\x06\x12\x10\n\x0cRATE_LIMITED\x10\x07*\xb7\x01\n\x0ePutStateReason\x12\x1c\n\x18UNKNOWN_PUT_STATE_REASON\x10\x00\x12\x0f\n\x0bSPIRC_HELLO\x10\x01\x12\x10\n\x0cSPIRC_NOTIFY\x10\x02\x12\x0e\n\nNEW_DEVICE\x10\x03\x12\x18\n\x14PLAYER_STATE_CHANGED\x10\x04\x12\x12\n\x0eVOLUME_CHANGED\x10\x05\x12\x11\n\rPICKER_OPENED\x10\x06\x12\x13\n\x0f\x42\x45\x43\x41ME_INACTIVE\x10\x07*;\n\nMemberType\x12\x0c\n\x08SPIRC_V2\x10\x00\x12\x0c\n\x08SPIRC_V3\x10\x01\x12\x11\n\rCONNECT_STATE\x10\x02*\x84\x01\n\x13\x43lusterUpdateReason\x12!\n\x1dUNKNOWN_CLUSTER_UPDATE_REASON\x10\x00\x12\x17\n\x13\x44\x45VICES_DISAPPEARED\x10\x01\x12\x18\n\x14\x44\x45VICE_STATE_CHANGED\x10\x02\x12\x17\n\x13NEW_DEVICE_APPEARED\x10\x03*\xa0\x02\n\nDeviceType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0c\n\x08\x43OMPUTER\x10\x01\x12\n\n\x06TABLET\x10\x02\x12\x0e\n\nSMARTPHONE\x10\x03\x12\x0b\n\x07SPEAKER\x10\x04\x12\x06\n\x02TV\x10\x05\x12\x07\n\x03\x41VR\x10\x06\x12\x07\n\x03STB\x10\x07\x12\x10\n\x0c\x41UDIO_DONGLE\x10\x08\x12\x10\n\x0cGAME_CONSOLE\x10\t\x12\x0e\n\nCAST_VIDEO\x10\n\x12\x0e\n\nCAST_AUDIO\x10\x0b\x12\x0e\n\nAUTOMOBILE\x10\x0c\x12\x0e\n\nSMARTWATCH\x10\r\x12\x0e\n\nCHROMEBOOK\x10\x0e\x12\x13\n\x0fUNKNOWN_SPOTIFY\x10\x64\x12\r\n\tCAR_THING\x10\x65\x12\x0c\n\x08OBSERVER\x10\x66\x12\x0e\n\nHOME_THING\x10gB\x1c\n\x18\x63om.spotify.connectstateH\x02\x62\x06proto3', - dependencies=[ - player__pb2.DESCRIPTOR, - ]) - -_SENDCOMMANDRESULT = _descriptor.EnumDescriptor( - name='SendCommandResult', - full_name='connectstate.SendCommandResult', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='UNKNOWN_SEND_COMMAND_RESULT', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SUCCESS', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='DEVICE_NOT_FOUND', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CONTEXT_PLAYER_ERROR', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='DEVICE_DISAPPEARED', - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='UPSTREAM_ERROR', - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='DEVICE_DOES_NOT_SUPPORT_COMMAND', - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='RATE_LIMITED', - index=7, - number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=2650, - serialized_end=2862, -) -_sym_db.RegisterEnumDescriptor(_SENDCOMMANDRESULT) - -SendCommandResult = enum_type_wrapper.EnumTypeWrapper(_SENDCOMMANDRESULT) -_PUTSTATEREASON = _descriptor.EnumDescriptor( - name='PutStateReason', - full_name='connectstate.PutStateReason', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='UNKNOWN_PUT_STATE_REASON', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SPIRC_HELLO', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SPIRC_NOTIFY', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='NEW_DEVICE', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLAYER_STATE_CHANGED', - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='VOLUME_CHANGED', - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PICKER_OPENED', - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='BECAME_INACTIVE', - index=7, - number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=2865, - serialized_end=3048, -) -_sym_db.RegisterEnumDescriptor(_PUTSTATEREASON) - -PutStateReason = enum_type_wrapper.EnumTypeWrapper(_PUTSTATEREASON) -_MEMBERTYPE = _descriptor.EnumDescriptor( - name='MemberType', - full_name='connectstate.MemberType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='SPIRC_V2', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SPIRC_V3', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CONNECT_STATE', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3050, - serialized_end=3109, -) -_sym_db.RegisterEnumDescriptor(_MEMBERTYPE) - -MemberType = enum_type_wrapper.EnumTypeWrapper(_MEMBERTYPE) -_CLUSTERUPDATEREASON = _descriptor.EnumDescriptor( - name='ClusterUpdateReason', - full_name='connectstate.ClusterUpdateReason', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='UNKNOWN_CLUSTER_UPDATE_REASON', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='DEVICES_DISAPPEARED', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='DEVICE_STATE_CHANGED', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='NEW_DEVICE_APPEARED', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3112, - serialized_end=3244, -) -_sym_db.RegisterEnumDescriptor(_CLUSTERUPDATEREASON) - -ClusterUpdateReason = enum_type_wrapper.EnumTypeWrapper(_CLUSTERUPDATEREASON) -_DEVICETYPE = _descriptor.EnumDescriptor( - name='DeviceType', - full_name='connectstate.DeviceType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='UNKNOWN', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='COMPUTER', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='TABLET', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SMARTPHONE', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SPEAKER', - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='TV', - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AVR', - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='STB', - index=7, - number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AUDIO_DONGLE', - index=8, - number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='GAME_CONSOLE', - index=9, - number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CAST_VIDEO', - index=10, - number=10, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CAST_AUDIO', - index=11, - number=11, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AUTOMOBILE', - index=12, - number=12, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SMARTWATCH', - index=13, - number=13, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CHROMEBOOK', - index=14, - number=14, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='UNKNOWN_SPOTIFY', - index=15, - number=100, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CAR_THING', - index=16, - number=101, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OBSERVER', - index=17, - number=102, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='HOME_THING', - index=18, - number=103, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3247, - serialized_end=3535, -) -_sym_db.RegisterEnumDescriptor(_DEVICETYPE) - -DeviceType = enum_type_wrapper.EnumTypeWrapper(_DEVICETYPE) -UNKNOWN_SEND_COMMAND_RESULT = 0 -SUCCESS = 1 -DEVICE_NOT_FOUND = 2 -CONTEXT_PLAYER_ERROR = 3 -DEVICE_DISAPPEARED = 4 -UPSTREAM_ERROR = 5 -DEVICE_DOES_NOT_SUPPORT_COMMAND = 6 -RATE_LIMITED = 7 -UNKNOWN_PUT_STATE_REASON = 0 -SPIRC_HELLO = 1 -SPIRC_NOTIFY = 2 -NEW_DEVICE = 3 -PLAYER_STATE_CHANGED = 4 -VOLUME_CHANGED = 5 -PICKER_OPENED = 6 -BECAME_INACTIVE = 7 -SPIRC_V2 = 0 -SPIRC_V3 = 1 -CONNECT_STATE = 2 -UNKNOWN_CLUSTER_UPDATE_REASON = 0 -DEVICES_DISAPPEARED = 1 -DEVICE_STATE_CHANGED = 2 -NEW_DEVICE_APPEARED = 3 -UNKNOWN = 0 -COMPUTER = 1 -TABLET = 2 -SMARTPHONE = 3 -SPEAKER = 4 -TV = 5 -AVR = 6 -STB = 7 -AUDIO_DONGLE = 8 -GAME_CONSOLE = 9 -CAST_VIDEO = 10 -CAST_AUDIO = 11 -AUTOMOBILE = 12 -SMARTWATCH = 13 -CHROMEBOOK = 14 -UNKNOWN_SPOTIFY = 100 -CAR_THING = 101 -OBSERVER = 102 -HOME_THING = 103 - -_CLUSTERUPDATE = _descriptor.Descriptor( - name='ClusterUpdate', - full_name='connectstate.ClusterUpdate', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='cluster', - full_name='connectstate.ClusterUpdate.cluster', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='update_reason', - full_name='connectstate.ClusterUpdate.update_reason', - index=1, - number=2, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ack_id', - full_name='connectstate.ClusterUpdate.ack_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='devices_that_changed', - full_name='connectstate.ClusterUpdate.devices_that_changed', - index=3, - number=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=46, - serialized_end=205, -) - -_DEVICE = _descriptor.Descriptor( - name='Device', - full_name='connectstate.Device', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='device_info', - full_name='connectstate.Device.device_info', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='player_state', - full_name='connectstate.Device.player_state', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='private_device_info', - full_name='connectstate.Device.private_device_info', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=208, - serialized_end=374, -) - -_CLUSTER_DEVICEENTRY = _descriptor.Descriptor( - name='DeviceEntry', - full_name='connectstate.Cluster.DeviceEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', - full_name='connectstate.Cluster.DeviceEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', - full_name='connectstate.Cluster.DeviceEntry.value', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b'8\001', - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=556, - serialized_end=627, -) - -_CLUSTER = _descriptor.Descriptor( - name='Cluster', - full_name='connectstate.Cluster', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='timestamp', - full_name='connectstate.Cluster.timestamp', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='active_device_id', - full_name='connectstate.Cluster.active_device_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='player_state', - full_name='connectstate.Cluster.player_state', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device', - full_name='connectstate.Cluster.device', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='transfer_data', - full_name='connectstate.Cluster.transfer_data', - index=4, - number=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[ - _CLUSTER_DEVICEENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=377, - serialized_end=627, -) - -_PUTSTATEREQUEST = _descriptor.Descriptor( - name='PutStateRequest', - full_name='connectstate.PutStateRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='callback_url', - full_name='connectstate.PutStateRequest.callback_url', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device', - full_name='connectstate.PutStateRequest.device', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='member_type', - full_name='connectstate.PutStateRequest.member_type', - index=2, - number=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_active', - full_name='connectstate.PutStateRequest.is_active', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='put_state_reason', - full_name='connectstate.PutStateRequest.put_state_reason', - index=4, - number=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='message_id', - full_name='connectstate.PutStateRequest.message_id', - index=5, - number=6, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_command_sent_by_device_id', - full_name= - 'connectstate.PutStateRequest.last_command_sent_by_device_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_command_message_id', - full_name='connectstate.PutStateRequest.last_command_message_id', - index=7, - number=8, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='started_playing_at', - full_name='connectstate.PutStateRequest.started_playing_at', - index=8, - number=9, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='has_been_playing_for_ms', - full_name='connectstate.PutStateRequest.has_been_playing_for_ms', - index=9, - number=11, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_side_timestamp', - full_name='connectstate.PutStateRequest.client_side_timestamp', - index=10, - number=12, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='only_write_player_state', - full_name='connectstate.PutStateRequest.only_write_player_state', - index=11, - number=13, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=630, - serialized_end=1047, -) - -_PRIVATEDEVICEINFO = _descriptor.Descriptor( - name='PrivateDeviceInfo', - full_name='connectstate.PrivateDeviceInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='platform', - full_name='connectstate.PrivateDeviceInfo.platform', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1049, - serialized_end=1086, -) - -_SUBSCRIBEREQUEST = _descriptor.Descriptor( - name='SubscribeRequest', - full_name='connectstate.SubscribeRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='callback_url', - full_name='connectstate.SubscribeRequest.callback_url', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1088, - serialized_end=1128, -) - -_DEVICEINFO_METADATAMAPENTRY = _descriptor.Descriptor( - name='MetadataMapEntry', - full_name='connectstate.DeviceInfo.MetadataMapEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', - full_name='connectstate.DeviceInfo.MetadataMapEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', - full_name='connectstate.DeviceInfo.MetadataMapEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b'8\001', - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1534, - serialized_end=1584, -) - -_DEVICEINFO = _descriptor.Descriptor( - name='DeviceInfo', - full_name='connectstate.DeviceInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='can_play', - full_name='connectstate.DeviceInfo.can_play', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='volume', - full_name='connectstate.DeviceInfo.volume', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='name', - full_name='connectstate.DeviceInfo.name', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='capabilities', - full_name='connectstate.DeviceInfo.capabilities', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_software_version', - full_name='connectstate.DeviceInfo.device_software_version', - index=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_type', - full_name='connectstate.DeviceInfo.device_type', - index=5, - number=7, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='spirc_version', - full_name='connectstate.DeviceInfo.spirc_version', - index=6, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_id', - full_name='connectstate.DeviceInfo.device_id', - index=7, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_private_session', - full_name='connectstate.DeviceInfo.is_private_session', - index=8, - number=11, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_social_connect', - full_name='connectstate.DeviceInfo.is_social_connect', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_id', - full_name='connectstate.DeviceInfo.client_id', - index=10, - number=13, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='brand', - full_name='connectstate.DeviceInfo.brand', - index=11, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='model', - full_name='connectstate.DeviceInfo.model', - index=12, - number=15, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='metadata_map', - full_name='connectstate.DeviceInfo.metadata_map', - index=13, - number=16, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[ - _DEVICEINFO_METADATAMAPENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1131, - serialized_end=1584, -) - -_CAPABILITIES = _descriptor.Descriptor( - name='Capabilities', - full_name='connectstate.Capabilities', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='can_be_player', - full_name='connectstate.Capabilities.can_be_player', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='restrict_to_local', - full_name='connectstate.Capabilities.restrict_to_local', - index=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='gaia_eq_connect_id', - full_name='connectstate.Capabilities.gaia_eq_connect_id', - index=2, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='supports_logout', - full_name='connectstate.Capabilities.supports_logout', - index=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_observable', - full_name='connectstate.Capabilities.is_observable', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='volume_steps', - full_name='connectstate.Capabilities.volume_steps', - index=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='supported_types', - full_name='connectstate.Capabilities.supported_types', - index=6, - number=9, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='command_acks', - full_name='connectstate.Capabilities.command_acks', - index=7, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='supports_rename', - full_name='connectstate.Capabilities.supports_rename', - index=8, - number=11, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='hidden', - full_name='connectstate.Capabilities.hidden', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disable_volume', - full_name='connectstate.Capabilities.disable_volume', - index=10, - number=13, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='connect_disabled', - full_name='connectstate.Capabilities.connect_disabled', - index=11, - number=14, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='supports_playlist_v2', - full_name='connectstate.Capabilities.supports_playlist_v2', - index=12, - number=15, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_controllable', - full_name='connectstate.Capabilities.is_controllable', - index=13, - number=16, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='supports_external_episodes', - full_name='connectstate.Capabilities.supports_external_episodes', - index=14, - number=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='supports_set_backend_metadata', - full_name='connectstate.Capabilities.supports_set_backend_metadata', - index=15, - number=18, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='supports_transfer_command', - full_name='connectstate.Capabilities.supports_transfer_command', - index=16, - number=19, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='supports_command_request', - full_name='connectstate.Capabilities.supports_command_request', - index=17, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_voice_enabled', - full_name='connectstate.Capabilities.is_voice_enabled', - index=18, - number=21, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='needs_full_player_state', - full_name='connectstate.Capabilities.needs_full_player_state', - index=19, - number=22, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='supports_gzip_pushes', - full_name='connectstate.Capabilities.supports_gzip_pushes', - index=20, - number=23, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1587, - serialized_end=2175, -) - -_CONNECTCOMMANDOPTIONS = _descriptor.Descriptor( - name='ConnectCommandOptions', - full_name='connectstate.ConnectCommandOptions', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='message_id', - full_name='connectstate.ConnectCommandOptions.message_id', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=2177, - serialized_end=2220, -) - -_LOGOUTCOMMAND = _descriptor.Descriptor( - name='LogoutCommand', - full_name='connectstate.LogoutCommand', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='command_options', - full_name='connectstate.LogoutCommand.command_options', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=2222, - serialized_end=2299, -) - -_SETVOLUMECOMMAND = _descriptor.Descriptor( - name='SetVolumeCommand', - full_name='connectstate.SetVolumeCommand', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='volume', - full_name='connectstate.SetVolumeCommand.volume', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='command_options', - full_name='connectstate.SetVolumeCommand.command_options', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=2301, - serialized_end=2397, -) - -_RENAMECOMMAND = _descriptor.Descriptor( - name='RenameCommand', - full_name='connectstate.RenameCommand', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='rename_to', - full_name='connectstate.RenameCommand.rename_to', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='command_options', - full_name='connectstate.RenameCommand.command_options', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=2399, - serialized_end=2495, -) - -_SETBACKENDMETADATACOMMAND_METADATAENTRY = _descriptor.Descriptor( - name='MetadataEntry', - full_name='connectstate.SetBackendMetadataCommand.MetadataEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', - full_name= - 'connectstate.SetBackendMetadataCommand.MetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', - full_name= - 'connectstate.SetBackendMetadataCommand.MetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b'8\001', - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=2600, - serialized_end=2647, -) - -_SETBACKENDMETADATACOMMAND = _descriptor.Descriptor( - name='SetBackendMetadataCommand', - full_name='connectstate.SetBackendMetadataCommand', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='metadata', - full_name='connectstate.SetBackendMetadataCommand.metadata', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[ - _SETBACKENDMETADATACOMMAND_METADATAENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=2498, - serialized_end=2647, -) - -_CLUSTERUPDATE.fields_by_name['cluster'].message_type = _CLUSTER -_CLUSTERUPDATE.fields_by_name['update_reason'].enum_type = _CLUSTERUPDATEREASON -_DEVICE.fields_by_name['device_info'].message_type = _DEVICEINFO -_DEVICE.fields_by_name['player_state'].message_type = player__pb2._PLAYERSTATE -_DEVICE.fields_by_name['private_device_info'].message_type = _PRIVATEDEVICEINFO -_CLUSTER_DEVICEENTRY.fields_by_name['value'].message_type = _DEVICEINFO -_CLUSTER_DEVICEENTRY.containing_type = _CLUSTER -_CLUSTER.fields_by_name['player_state'].message_type = player__pb2._PLAYERSTATE -_CLUSTER.fields_by_name['device'].message_type = _CLUSTER_DEVICEENTRY -_PUTSTATEREQUEST.fields_by_name['device'].message_type = _DEVICE -_PUTSTATEREQUEST.fields_by_name['member_type'].enum_type = _MEMBERTYPE -_PUTSTATEREQUEST.fields_by_name['put_state_reason'].enum_type = _PUTSTATEREASON -_DEVICEINFO_METADATAMAPENTRY.containing_type = _DEVICEINFO -_DEVICEINFO.fields_by_name['capabilities'].message_type = _CAPABILITIES -_DEVICEINFO.fields_by_name['device_type'].enum_type = _DEVICETYPE -_DEVICEINFO.fields_by_name[ - 'metadata_map'].message_type = _DEVICEINFO_METADATAMAPENTRY -_LOGOUTCOMMAND.fields_by_name[ - 'command_options'].message_type = _CONNECTCOMMANDOPTIONS -_SETVOLUMECOMMAND.fields_by_name[ - 'command_options'].message_type = _CONNECTCOMMANDOPTIONS -_RENAMECOMMAND.fields_by_name[ - 'command_options'].message_type = _CONNECTCOMMANDOPTIONS -_SETBACKENDMETADATACOMMAND_METADATAENTRY.containing_type = _SETBACKENDMETADATACOMMAND -_SETBACKENDMETADATACOMMAND.fields_by_name[ - 'metadata'].message_type = _SETBACKENDMETADATACOMMAND_METADATAENTRY -DESCRIPTOR.message_types_by_name['ClusterUpdate'] = _CLUSTERUPDATE -DESCRIPTOR.message_types_by_name['Device'] = _DEVICE -DESCRIPTOR.message_types_by_name['Cluster'] = _CLUSTER -DESCRIPTOR.message_types_by_name['PutStateRequest'] = _PUTSTATEREQUEST -DESCRIPTOR.message_types_by_name['PrivateDeviceInfo'] = _PRIVATEDEVICEINFO -DESCRIPTOR.message_types_by_name['SubscribeRequest'] = _SUBSCRIBEREQUEST -DESCRIPTOR.message_types_by_name['DeviceInfo'] = _DEVICEINFO -DESCRIPTOR.message_types_by_name['Capabilities'] = _CAPABILITIES -DESCRIPTOR.message_types_by_name[ - 'ConnectCommandOptions'] = _CONNECTCOMMANDOPTIONS -DESCRIPTOR.message_types_by_name['LogoutCommand'] = _LOGOUTCOMMAND -DESCRIPTOR.message_types_by_name['SetVolumeCommand'] = _SETVOLUMECOMMAND -DESCRIPTOR.message_types_by_name['RenameCommand'] = _RENAMECOMMAND -DESCRIPTOR.message_types_by_name[ - 'SetBackendMetadataCommand'] = _SETBACKENDMETADATACOMMAND -DESCRIPTOR.enum_types_by_name['SendCommandResult'] = _SENDCOMMANDRESULT -DESCRIPTOR.enum_types_by_name['PutStateReason'] = _PUTSTATEREASON -DESCRIPTOR.enum_types_by_name['MemberType'] = _MEMBERTYPE -DESCRIPTOR.enum_types_by_name['ClusterUpdateReason'] = _CLUSTERUPDATEREASON -DESCRIPTOR.enum_types_by_name['DeviceType'] = _DEVICETYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -ClusterUpdate = _reflection.GeneratedProtocolMessageType( - 'ClusterUpdate', - (_message.Message, ), - { - 'DESCRIPTOR': _CLUSTERUPDATE, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.ClusterUpdate) - }) -_sym_db.RegisterMessage(ClusterUpdate) - -Device = _reflection.GeneratedProtocolMessageType( - 'Device', - (_message.Message, ), - { - 'DESCRIPTOR': _DEVICE, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.Device) - }) -_sym_db.RegisterMessage(Device) - -Cluster = _reflection.GeneratedProtocolMessageType( - 'Cluster', - (_message.Message, ), - { - 'DeviceEntry': - _reflection.GeneratedProtocolMessageType( - 'DeviceEntry', - (_message.Message, ), - { - 'DESCRIPTOR': _CLUSTER_DEVICEENTRY, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.Cluster.DeviceEntry) - }), - 'DESCRIPTOR': - _CLUSTER, - '__module__': - 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.Cluster) - }) -_sym_db.RegisterMessage(Cluster) -_sym_db.RegisterMessage(Cluster.DeviceEntry) - -PutStateRequest = _reflection.GeneratedProtocolMessageType( - 'PutStateRequest', - (_message.Message, ), - { - 'DESCRIPTOR': _PUTSTATEREQUEST, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.PutStateRequest) - }) -_sym_db.RegisterMessage(PutStateRequest) - -PrivateDeviceInfo = _reflection.GeneratedProtocolMessageType( - 'PrivateDeviceInfo', - (_message.Message, ), - { - 'DESCRIPTOR': _PRIVATEDEVICEINFO, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.PrivateDeviceInfo) - }) -_sym_db.RegisterMessage(PrivateDeviceInfo) - -SubscribeRequest = _reflection.GeneratedProtocolMessageType( - 'SubscribeRequest', - (_message.Message, ), - { - 'DESCRIPTOR': _SUBSCRIBEREQUEST, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.SubscribeRequest) - }) -_sym_db.RegisterMessage(SubscribeRequest) - -DeviceInfo = _reflection.GeneratedProtocolMessageType( - 'DeviceInfo', - (_message.Message, ), - { - 'MetadataMapEntry': - _reflection.GeneratedProtocolMessageType( - 'MetadataMapEntry', - (_message.Message, ), - { - 'DESCRIPTOR': _DEVICEINFO_METADATAMAPENTRY, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.DeviceInfo.MetadataMapEntry) - }), - 'DESCRIPTOR': - _DEVICEINFO, - '__module__': - 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.DeviceInfo) - }) -_sym_db.RegisterMessage(DeviceInfo) -_sym_db.RegisterMessage(DeviceInfo.MetadataMapEntry) - -Capabilities = _reflection.GeneratedProtocolMessageType( - 'Capabilities', - (_message.Message, ), - { - 'DESCRIPTOR': _CAPABILITIES, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.Capabilities) - }) -_sym_db.RegisterMessage(Capabilities) - -ConnectCommandOptions = _reflection.GeneratedProtocolMessageType( - 'ConnectCommandOptions', - (_message.Message, ), - { - 'DESCRIPTOR': _CONNECTCOMMANDOPTIONS, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.ConnectCommandOptions) - }) -_sym_db.RegisterMessage(ConnectCommandOptions) - -LogoutCommand = _reflection.GeneratedProtocolMessageType( - 'LogoutCommand', - (_message.Message, ), - { - 'DESCRIPTOR': _LOGOUTCOMMAND, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.LogoutCommand) - }) -_sym_db.RegisterMessage(LogoutCommand) - -SetVolumeCommand = _reflection.GeneratedProtocolMessageType( - 'SetVolumeCommand', - (_message.Message, ), - { - 'DESCRIPTOR': _SETVOLUMECOMMAND, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.SetVolumeCommand) - }) -_sym_db.RegisterMessage(SetVolumeCommand) - -RenameCommand = _reflection.GeneratedProtocolMessageType( - 'RenameCommand', - (_message.Message, ), - { - 'DESCRIPTOR': _RENAMECOMMAND, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.RenameCommand) - }) -_sym_db.RegisterMessage(RenameCommand) - -SetBackendMetadataCommand = _reflection.GeneratedProtocolMessageType( - 'SetBackendMetadataCommand', - (_message.Message, ), - { - 'MetadataEntry': - _reflection.GeneratedProtocolMessageType( - 'MetadataEntry', - (_message.Message, ), - { - 'DESCRIPTOR': _SETBACKENDMETADATACOMMAND_METADATAENTRY, - '__module__': 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.SetBackendMetadataCommand.MetadataEntry) - }), - 'DESCRIPTOR': - _SETBACKENDMETADATACOMMAND, - '__module__': - 'connect_pb2' - # @@protoc_insertion_point(class_scope:connectstate.SetBackendMetadataCommand) - }) -_sym_db.RegisterMessage(SetBackendMetadataCommand) -_sym_db.RegisterMessage(SetBackendMetadataCommand.MetadataEntry) - -DESCRIPTOR._options = None -_CLUSTER_DEVICEENTRY._options = None -_DEVICEINFO_METADATAMAPENTRY._options = None -_SETBACKENDMETADATACOMMAND_METADATAENTRY._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Connectivity_pb2.py b/librespot/proto/Connectivity_pb2.py deleted file mode 100644 index bf17a91..0000000 --- a/librespot/proto/Connectivity_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: connectivity.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12\x63onnectivity.proto\x12\x1bspotify.clienttoken.data.v0\"{\n\x13\x43onnectivitySdkData\x12Q\n\x16platform_specific_data\x18\x01 \x01(\x0b\x32\x31.spotify.clienttoken.data.v0.PlatformSpecificData\x12\x11\n\tdevice_id\x18\x02 \x01(\t\"\xdf\x01\n\x14PlatformSpecificData\x12\x41\n\x07\x61ndroid\x18\x01 \x01(\x0b\x32..spotify.clienttoken.data.v0.NativeAndroidDataH\x00\x12\x39\n\x03ios\x18\x02 \x01(\x0b\x32*.spotify.clienttoken.data.v0.NativeIOSDataH\x00\x12\x41\n\x07windows\x18\x04 \x01(\x0b\x32..spotify.clienttoken.data.v0.NativeWindowsDataH\x00\x42\x06\n\x04\x64\x61ta\"\xb9\x01\n\x11NativeAndroidData\x12\x19\n\x11major_sdk_version\x18\x01 \x01(\x05\x12\x19\n\x11minor_sdk_version\x18\x02 \x01(\x05\x12\x19\n\x11patch_sdk_version\x18\x03 \x01(\x05\x12\x13\n\x0b\x61pi_version\x18\x04 \x01(\r\x12>\n\x11screen_dimensions\x18\x05 \x01(\x0b\x32#.spotify.clienttoken.data.v0.Screen\"\x9e\x01\n\rNativeIOSData\x12\x1c\n\x14user_interface_idiom\x18\x01 \x01(\x05\x12\x1f\n\x17target_iphone_simulator\x18\x02 \x01(\x08\x12\x12\n\nhw_machine\x18\x03 \x01(\t\x12\x16\n\x0esystem_version\x18\x04 \x01(\t\x12\"\n\x1asimulator_model_identifier\x18\x05 \x01(\t\"\xa0\x01\n\x11NativeWindowsData\x12\x12\n\nsomething1\x18\x01 \x01(\x05\x12\x12\n\nsomething3\x18\x03 \x01(\x05\x12\x12\n\nsomething4\x18\x04 \x01(\x05\x12\x12\n\nsomething6\x18\x06 \x01(\x05\x12\x12\n\nsomething7\x18\x07 \x01(\x05\x12\x12\n\nsomething8\x18\x08 \x01(\x05\x12\x13\n\x0bsomething10\x18\n \x01(\x08\"8\n\x06Screen\x12\r\n\x05width\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x05\x12\x0f\n\x07\x64\x65nsity\x18\x03 \x01(\x05\x42#\n\x1f\x63om.spotify.clienttoken.data.v0H\x02\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'connectivity_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\037com.spotify.clienttoken.data.v0H\002' - _CONNECTIVITYSDKDATA._serialized_start=51 - _CONNECTIVITYSDKDATA._serialized_end=174 - _PLATFORMSPECIFICDATA._serialized_start=177 - _PLATFORMSPECIFICDATA._serialized_end=400 - _NATIVEANDROIDDATA._serialized_start=403 - _NATIVEANDROIDDATA._serialized_end=588 - _NATIVEIOSDATA._serialized_start=591 - _NATIVEIOSDATA._serialized_end=749 - _NATIVEWINDOWSDATA._serialized_start=752 - _NATIVEWINDOWSDATA._serialized_end=912 - _SCREEN._serialized_start=914 - _SCREEN._serialized_end=970 -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/ContextPage_pb2.py b/librespot/proto/ContextPage_pb2.py deleted file mode 100644 index 5256d5a..0000000 --- a/librespot/proto/ContextPage_pb2.py +++ /dev/null @@ -1,239 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: context_page.proto -"""Generated protocol buffer code.""" -import ContextTrack_pb2 as context__track__pb2 -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="context_page.proto", - package="spotify.player.proto", - syntax="proto2", - serialized_options=b"\n\023com.spotify.contextH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x12\x63ontext_page.proto\x12\x14spotify.player.proto\x1a\x13\x63ontext_track.proto"\xef\x01\n\x0b\x43ontextPage\x12\x10\n\x08page_url\x18\x01 \x01(\t\x12\x15\n\rnext_page_url\x18\x02 \x01(\t\x12\x41\n\x08metadata\x18\x03 \x03(\x0b\x32/.spotify.player.proto.ContextPage.MetadataEntry\x12\x32\n\x06tracks\x18\x04 \x03(\x0b\x32".spotify.player.proto.ContextTrack\x12\x0f\n\x07loading\x18\x05 \x01(\x08\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x17\n\x13\x63om.spotify.contextH\x02', - dependencies=[ - context__track__pb2.DESCRIPTOR, - ], -) - -_CONTEXTPAGE_METADATAENTRY = _descriptor.Descriptor( - name="MetadataEntry", - full_name="spotify.player.proto.ContextPage.MetadataEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="spotify.player.proto.ContextPage.MetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="spotify.player.proto.ContextPage.MetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=258, - serialized_end=305, -) - -_CONTEXTPAGE = _descriptor.Descriptor( - name="ContextPage", - full_name="spotify.player.proto.ContextPage", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="page_url", - full_name="spotify.player.proto.ContextPage.page_url", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="next_page_url", - full_name="spotify.player.proto.ContextPage.next_page_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="metadata", - full_name="spotify.player.proto.ContextPage.metadata", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="tracks", - full_name="spotify.player.proto.ContextPage.tracks", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="loading", - full_name="spotify.player.proto.ContextPage.loading", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _CONTEXTPAGE_METADATAENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=66, - serialized_end=305, -) - -_CONTEXTPAGE_METADATAENTRY.containing_type = _CONTEXTPAGE -_CONTEXTPAGE.fields_by_name[ - "metadata"].message_type = _CONTEXTPAGE_METADATAENTRY -_CONTEXTPAGE.fields_by_name[ - "tracks"].message_type = context__track__pb2._CONTEXTTRACK -DESCRIPTOR.message_types_by_name["ContextPage"] = _CONTEXTPAGE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -ContextPage = _reflection.GeneratedProtocolMessageType( - "ContextPage", - (_message.Message, ), - { - "MetadataEntry": - _reflection.GeneratedProtocolMessageType( - "MetadataEntry", - (_message.Message, ), - { - "DESCRIPTOR": _CONTEXTPAGE_METADATAENTRY, - "__module__": "context_page_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.ContextPage.MetadataEntry) - }, - ), - "DESCRIPTOR": - _CONTEXTPAGE, - "__module__": - "context_page_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.ContextPage) - }, -) -_sym_db.RegisterMessage(ContextPage) -_sym_db.RegisterMessage(ContextPage.MetadataEntry) - -DESCRIPTOR._options = None -_CONTEXTPAGE_METADATAENTRY._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/ContextPlayerOptions_pb2.py b/librespot/proto/ContextPlayerOptions_pb2.py deleted file mode 100644 index 7b62e05..0000000 --- a/librespot/proto/ContextPlayerOptions_pb2.py +++ /dev/null @@ -1,215 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: context_player_options.proto -"""Generated protocol buffer code.""" -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="context_player_options.proto", - package="spotify.player.proto", - syntax="proto2", - serialized_options=b"\n\023com.spotify.contextH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x1c\x63ontext_player_options.proto\x12\x14spotify.player.proto"e\n\x14\x43ontextPlayerOptions\x12\x19\n\x11shuffling_context\x18\x01 \x01(\x08\x12\x19\n\x11repeating_context\x18\x02 \x01(\x08\x12\x17\n\x0frepeating_track\x18\x03 \x01(\x08"m\n\x1c\x43ontextPlayerOptionOverrides\x12\x19\n\x11shuffling_context\x18\x01 \x01(\x08\x12\x19\n\x11repeating_context\x18\x02 \x01(\x08\x12\x17\n\x0frepeating_track\x18\x03 \x01(\x08\x42\x17\n\x13\x63om.spotify.contextH\x02', -) - -_CONTEXTPLAYEROPTIONS = _descriptor.Descriptor( - name="ContextPlayerOptions", - full_name="spotify.player.proto.ContextPlayerOptions", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="shuffling_context", - full_name= - "spotify.player.proto.ContextPlayerOptions.shuffling_context", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="repeating_context", - full_name= - "spotify.player.proto.ContextPlayerOptions.repeating_context", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="repeating_track", - full_name= - "spotify.player.proto.ContextPlayerOptions.repeating_track", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=54, - serialized_end=155, -) - -_CONTEXTPLAYEROPTIONOVERRIDES = _descriptor.Descriptor( - name="ContextPlayerOptionOverrides", - full_name="spotify.player.proto.ContextPlayerOptionOverrides", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="shuffling_context", - full_name= - "spotify.player.proto.ContextPlayerOptionOverrides.shuffling_context", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="repeating_context", - full_name= - "spotify.player.proto.ContextPlayerOptionOverrides.repeating_context", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="repeating_track", - full_name= - "spotify.player.proto.ContextPlayerOptionOverrides.repeating_track", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=157, - serialized_end=266, -) - -DESCRIPTOR.message_types_by_name[ - "ContextPlayerOptions"] = _CONTEXTPLAYEROPTIONS -DESCRIPTOR.message_types_by_name[ - "ContextPlayerOptionOverrides"] = _CONTEXTPLAYEROPTIONOVERRIDES -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -ContextPlayerOptions = _reflection.GeneratedProtocolMessageType( - "ContextPlayerOptions", - (_message.Message, ), - { - "DESCRIPTOR": _CONTEXTPLAYEROPTIONS, - "__module__": "context_player_options_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.ContextPlayerOptions) - }, -) -_sym_db.RegisterMessage(ContextPlayerOptions) - -ContextPlayerOptionOverrides = _reflection.GeneratedProtocolMessageType( - "ContextPlayerOptionOverrides", - (_message.Message, ), - { - "DESCRIPTOR": _CONTEXTPLAYEROPTIONOVERRIDES, - "__module__": "context_player_options_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.ContextPlayerOptionOverrides) - }, -) -_sym_db.RegisterMessage(ContextPlayerOptionOverrides) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/ContextTrack_pb2.py b/librespot/proto/ContextTrack_pb2.py deleted file mode 100644 index 495b4ea..0000000 --- a/librespot/proto/ContextTrack_pb2.py +++ /dev/null @@ -1,214 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: context_track.proto -"""Generated protocol buffer code.""" -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="context_track.proto", - package="spotify.player.proto", - syntax="proto2", - serialized_options=b"\n\023com.spotify.contextH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x13\x63ontext_track.proto\x12\x14spotify.player.proto"\xaa\x01\n\x0c\x43ontextTrack\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x0b\n\x03uid\x18\x02 \x01(\t\x12\x0b\n\x03gid\x18\x03 \x01(\x0c\x12\x42\n\x08metadata\x18\x04 \x03(\x0b\x32\x30.spotify.player.proto.ContextTrack.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x17\n\x13\x63om.spotify.contextH\x02', -) - -_CONTEXTTRACK_METADATAENTRY = _descriptor.Descriptor( - name="MetadataEntry", - full_name="spotify.player.proto.ContextTrack.MetadataEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="spotify.player.proto.ContextTrack.MetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="spotify.player.proto.ContextTrack.MetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=169, - serialized_end=216, -) - -_CONTEXTTRACK = _descriptor.Descriptor( - name="ContextTrack", - full_name="spotify.player.proto.ContextTrack", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="uri", - full_name="spotify.player.proto.ContextTrack.uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="uid", - full_name="spotify.player.proto.ContextTrack.uid", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="gid", - full_name="spotify.player.proto.ContextTrack.gid", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="metadata", - full_name="spotify.player.proto.ContextTrack.metadata", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _CONTEXTTRACK_METADATAENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=46, - serialized_end=216, -) - -_CONTEXTTRACK_METADATAENTRY.containing_type = _CONTEXTTRACK -_CONTEXTTRACK.fields_by_name[ - "metadata"].message_type = _CONTEXTTRACK_METADATAENTRY -DESCRIPTOR.message_types_by_name["ContextTrack"] = _CONTEXTTRACK -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -ContextTrack = _reflection.GeneratedProtocolMessageType( - "ContextTrack", - (_message.Message, ), - { - "MetadataEntry": - _reflection.GeneratedProtocolMessageType( - "MetadataEntry", - (_message.Message, ), - { - "DESCRIPTOR": _CONTEXTTRACK_METADATAENTRY, - "__module__": "context_track_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.ContextTrack.MetadataEntry) - }, - ), - "DESCRIPTOR": - _CONTEXTTRACK, - "__module__": - "context_track_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.ContextTrack) - }, -) -_sym_db.RegisterMessage(ContextTrack) -_sym_db.RegisterMessage(ContextTrack.MetadataEntry) - -DESCRIPTOR._options = None -_CONTEXTTRACK_METADATAENTRY._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Context_pb2.py b/librespot/proto/Context_pb2.py deleted file mode 100644 index 0b2eeae..0000000 --- a/librespot/proto/Context_pb2.py +++ /dev/null @@ -1,260 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: context.proto -"""Generated protocol buffer code.""" -import ContextPage_pb2 as context__page__pb2 -import Restrictions_pb2 as restrictions__pb2 -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="context.proto", - package="spotify.player.proto", - syntax="proto2", - serialized_options=b"\n\023com.spotify.contextH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\rcontext.proto\x12\x14spotify.player.proto\x1a\x12\x63ontext_page.proto\x1a\x12restrictions.proto"\x90\x02\n\x07\x43ontext\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12=\n\x08metadata\x18\x03 \x03(\x0b\x32+.spotify.player.proto.Context.MetadataEntry\x12\x38\n\x0crestrictions\x18\x04 \x01(\x0b\x32".spotify.player.proto.Restrictions\x12\x30\n\x05pages\x18\x05 \x03(\x0b\x32!.spotify.player.proto.ContextPage\x12\x0f\n\x07loading\x18\x06 \x01(\x08\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x17\n\x13\x63om.spotify.contextH\x02', - dependencies=[ - context__page__pb2.DESCRIPTOR, - restrictions__pb2.DESCRIPTOR, - ], -) - -_CONTEXT_METADATAENTRY = _descriptor.Descriptor( - name="MetadataEntry", - full_name="spotify.player.proto.Context.MetadataEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="spotify.player.proto.Context.MetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="spotify.player.proto.Context.MetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=305, - serialized_end=352, -) - -_CONTEXT = _descriptor.Descriptor( - name="Context", - full_name="spotify.player.proto.Context", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="uri", - full_name="spotify.player.proto.Context.uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="url", - full_name="spotify.player.proto.Context.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="metadata", - full_name="spotify.player.proto.Context.metadata", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="restrictions", - full_name="spotify.player.proto.Context.restrictions", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pages", - full_name="spotify.player.proto.Context.pages", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="loading", - full_name="spotify.player.proto.Context.loading", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _CONTEXT_METADATAENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=80, - serialized_end=352, -) - -_CONTEXT_METADATAENTRY.containing_type = _CONTEXT -_CONTEXT.fields_by_name["metadata"].message_type = _CONTEXT_METADATAENTRY -_CONTEXT.fields_by_name[ - "restrictions"].message_type = restrictions__pb2._RESTRICTIONS -_CONTEXT.fields_by_name["pages"].message_type = context__page__pb2._CONTEXTPAGE -DESCRIPTOR.message_types_by_name["Context"] = _CONTEXT -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Context = _reflection.GeneratedProtocolMessageType( - "Context", - (_message.Message, ), - { - "MetadataEntry": - _reflection.GeneratedProtocolMessageType( - "MetadataEntry", - (_message.Message, ), - { - "DESCRIPTOR": _CONTEXT_METADATAENTRY, - "__module__": "context_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.Context.MetadataEntry) - }, - ), - "DESCRIPTOR": - _CONTEXT, - "__module__": - "context_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.Context) - }, -) -_sym_db.RegisterMessage(Context) -_sym_db.RegisterMessage(Context.MetadataEntry) - -DESCRIPTOR._options = None -_CONTEXT_METADATAENTRY._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/ExplicitContentPubsub_pb2.py b/librespot/proto/ExplicitContentPubsub_pb2.py deleted file mode 100644 index 26ed33e..0000000 --- a/librespot/proto/ExplicitContentPubsub_pb2.py +++ /dev/null @@ -1,147 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: explicit_content_pubsub.proto -"""Generated protocol buffer code.""" -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 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name='explicit_content_pubsub.proto', - package='spotify.explicit_content.proto', - syntax='proto2', - serialized_options=b'\n\024com.spotify.explicitH\002', - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x1d\x65xplicit_content_pubsub.proto\x12\x1espotify.explicit_content.proto\"*\n\x0cKeyValuePair\x12\x0b\n\x03key\x18\x01 \x02(\t\x12\r\n\x05value\x18\x02 \x02(\t\"S\n\x14UserAttributesUpdate\x12;\n\x05pairs\x18\x01 \x03(\x0b\x32,.spotify.explicit_content.proto.KeyValuePairB\x18\n\x14\x63om.spotify.explicitH\x02' -) - -_KEYVALUEPAIR = _descriptor.Descriptor( - name='KeyValuePair', - full_name='spotify.explicit_content.proto.KeyValuePair', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', - full_name='spotify.explicit_content.proto.KeyValuePair.key', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', - full_name='spotify.explicit_content.proto.KeyValuePair.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=65, - serialized_end=107, -) - -_USERATTRIBUTESUPDATE = _descriptor.Descriptor( - name='UserAttributesUpdate', - full_name='spotify.explicit_content.proto.UserAttributesUpdate', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='pairs', - full_name= - 'spotify.explicit_content.proto.UserAttributesUpdate.pairs', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=109, - serialized_end=192, -) - -_USERATTRIBUTESUPDATE.fields_by_name['pairs'].message_type = _KEYVALUEPAIR -DESCRIPTOR.message_types_by_name['KeyValuePair'] = _KEYVALUEPAIR -DESCRIPTOR.message_types_by_name[ - 'UserAttributesUpdate'] = _USERATTRIBUTESUPDATE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -KeyValuePair = _reflection.GeneratedProtocolMessageType( - 'KeyValuePair', - (_message.Message, ), - { - 'DESCRIPTOR': _KEYVALUEPAIR, - '__module__': 'explicit_content_pubsub_pb2' - # @@protoc_insertion_point(class_scope:spotify.explicit_content.proto.KeyValuePair) - }) -_sym_db.RegisterMessage(KeyValuePair) - -UserAttributesUpdate = _reflection.GeneratedProtocolMessageType( - 'UserAttributesUpdate', - (_message.Message, ), - { - 'DESCRIPTOR': _USERATTRIBUTESUPDATE, - '__module__': 'explicit_content_pubsub_pb2' - # @@protoc_insertion_point(class_scope:spotify.explicit_content.proto.UserAttributesUpdate) - }) -_sym_db.RegisterMessage(UserAttributesUpdate) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Keyexchange_pb2.py b/librespot/proto/Keyexchange_pb2.py deleted file mode 100644 index 663ee3b..0000000 --- a/librespot/proto/Keyexchange_pb2.py +++ /dev/null @@ -1,2497 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: keyexchange.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import enum_type_wrapper -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 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name='keyexchange.proto', - package='spotify', - syntax='proto2', - serialized_options=b'\n\013com.spotify', - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x11keyexchange.proto\x12\x07spotify\"\xe0\x02\n\x0b\x43lientHello\x12&\n\nbuild_info\x18\n \x02(\x0b\x32\x12.spotify.BuildInfo\x12\x34\n\x16\x66ingerprints_supported\x18\x14 \x03(\x0e\x32\x14.spotify.Fingerprint\x12\x34\n\x16\x63ryptosuites_supported\x18\x1e \x03(\x0e\x32\x14.spotify.Cryptosuite\x12\x30\n\x14powschemes_supported\x18( \x03(\x0e\x32\x12.spotify.Powscheme\x12:\n\x12login_crypto_hello\x18\x32 \x02(\x0b\x32\x1e.spotify.LoginCryptoHelloUnion\x12\x14\n\x0c\x63lient_nonce\x18< \x02(\x0c\x12\x0f\n\x07padding\x18\x46 \x01(\x0c\x12(\n\x0b\x66\x65\x61ture_set\x18P \x01(\x0b\x32\x13.spotify.FeatureSet\"\x92\x01\n\tBuildInfo\x12!\n\x07product\x18\n \x02(\x0e\x32\x10.spotify.Product\x12,\n\rproduct_flags\x18\x14 \x03(\x0e\x32\x15.spotify.ProductFlags\x12#\n\x08platform\x18\x1e \x02(\x0e\x32\x11.spotify.Platform\x12\x0f\n\x07version\x18( \x02(\x04\"W\n\x15LoginCryptoHelloUnion\x12>\n\x0e\x64iffie_hellman\x18\n \x01(\x0b\x32&.spotify.LoginCryptoDiffieHellmanHello\"F\n\x1dLoginCryptoDiffieHellmanHello\x12\n\n\x02gc\x18\n \x02(\x0c\x12\x19\n\x11server_keys_known\x18\x14 \x02(\r\";\n\nFeatureSet\x12\x13\n\x0b\x61utoupdate2\x18\x01 \x01(\x08\x12\x18\n\x10\x63urrent_location\x18\x02 \x01(\x08\"\x9c\x01\n\x11\x41PResponseMessage\x12\'\n\tchallenge\x18\n \x01(\x0b\x32\x14.spotify.APChallenge\x12\x30\n\x07upgrade\x18\x14 \x01(\x0b\x32\x1f.spotify.UpgradeRequiredMessage\x12,\n\x0clogin_failed\x18\x1e \x01(\x0b\x32\x16.spotify.APLoginFailed\"\xa7\x02\n\x0b\x41PChallenge\x12\x42\n\x16login_crypto_challenge\x18\n \x02(\x0b\x32\".spotify.LoginCryptoChallengeUnion\x12\x41\n\x15\x66ingerprint_challenge\x18\x14 \x02(\x0b\x32\".spotify.FingerprintChallengeUnion\x12\x31\n\rpow_challenge\x18\x1e \x02(\x0b\x32\x1a.spotify.PoWChallengeUnion\x12\x37\n\x10\x63rypto_challenge\x18( \x02(\x0b\x32\x1d.spotify.CryptoChallengeUnion\x12\x14\n\x0cserver_nonce\x18\x32 \x02(\x0c\x12\x0f\n\x07padding\x18< \x01(\x0c\"_\n\x19LoginCryptoChallengeUnion\x12\x42\n\x0e\x64iffie_hellman\x18\n \x01(\x0b\x32*.spotify.LoginCryptoDiffieHellmanChallenge\"c\n!LoginCryptoDiffieHellmanChallenge\x12\n\n\x02gs\x18\n \x02(\x0c\x12\x1c\n\x14server_signature_key\x18\x14 \x02(\x05\x12\x14\n\x0cgs_signature\x18\x1e \x02(\x0c\"\x8c\x01\n\x19\x46ingerprintChallengeUnion\x12\x31\n\x05grain\x18\n \x01(\x0b\x32\".spotify.FingerprintGrainChallenge\x12<\n\x0bhmac_ripemd\x18\x14 \x01(\x0b\x32\'.spotify.FingerprintHmacRipemdChallenge\"(\n\x19\x46ingerprintGrainChallenge\x12\x0b\n\x03kek\x18\n \x02(\x0c\"3\n\x1e\x46ingerprintHmacRipemdChallenge\x12\x11\n\tchallenge\x18\n \x02(\x0c\"E\n\x11PoWChallengeUnion\x12\x30\n\thash_cash\x18\n \x01(\x0b\x32\x1d.spotify.PoWHashCashChallenge\"F\n\x14PoWHashCashChallenge\x12\x0e\n\x06prefix\x18\n \x01(\x0c\x12\x0e\n\x06length\x18\x14 \x01(\x05\x12\x0e\n\x06target\x18\x1e \x01(\x05\"\x84\x01\n\x14\x43ryptoChallengeUnion\x12\x30\n\x07shannon\x18\n \x01(\x0b\x32\x1f.spotify.CryptoShannonChallenge\x12:\n\rrc4_sha1_hmac\x18\x14 \x01(\x0b\x32#.spotify.CryptoRc4Sha1HmacChallenge\"\x18\n\x16\x43ryptoShannonChallenge\"\x1c\n\x1a\x43ryptoRc4Sha1HmacChallenge\"]\n\x16UpgradeRequiredMessage\x12\x1b\n\x13upgrade_signed_part\x18\n \x02(\x0c\x12\x11\n\tsignature\x18\x14 \x02(\x0c\x12\x13\n\x0bhttp_suffix\x18\x1e \x01(\t\"w\n\rAPLoginFailed\x12&\n\nerror_code\x18\n \x02(\x0e\x32\x12.spotify.ErrorCode\x12\x13\n\x0bretry_delay\x18\x14 \x01(\x05\x12\x0e\n\x06\x65xpiry\x18\x1e \x01(\x05\x12\x19\n\x11\x65rror_description\x18( \x01(\t\"\xc3\x01\n\x17\x43lientResponsePlaintext\x12@\n\x15login_crypto_response\x18\n \x02(\x0b\x32!.spotify.LoginCryptoResponseUnion\x12/\n\x0cpow_response\x18\x14 \x02(\x0b\x32\x19.spotify.PoWResponseUnion\x12\x35\n\x0f\x63rypto_response\x18\x1e \x02(\x0b\x32\x1c.spotify.CryptoResponseUnion\"]\n\x18LoginCryptoResponseUnion\x12\x41\n\x0e\x64iffie_hellman\x18\n \x01(\x0b\x32).spotify.LoginCryptoDiffieHellmanResponse\"0\n LoginCryptoDiffieHellmanResponse\x12\x0c\n\x04hmac\x18\n \x02(\x0c\"C\n\x10PoWResponseUnion\x12/\n\thash_cash\x18\n \x01(\x0b\x32\x1c.spotify.PoWHashCashResponse\"*\n\x13PoWHashCashResponse\x12\x13\n\x0bhash_suffix\x18\n \x02(\x0c\"\x81\x01\n\x13\x43ryptoResponseUnion\x12/\n\x07shannon\x18\n \x01(\x0b\x32\x1e.spotify.CryptoShannonResponse\x12\x39\n\rrc4_sha1_hmac\x18\x14 \x01(\x0b\x32\".spotify.CryptoRc4Sha1HmacResponse\"&\n\x15\x43ryptoShannonResponse\x12\r\n\x05\x64ummy\x18\x01 \x01(\x05\"*\n\x19\x43ryptoRc4Sha1HmacResponse\x12\r\n\x05\x64ummy\x18\x01 \x01(\x05*\x7f\n\x07Product\x12\x12\n\x0ePRODUCT_CLIENT\x10\x00\x12\x16\n\x12PRODUCT_LIBSPOTIFY\x10\x01\x12\x12\n\x0ePRODUCT_MOBILE\x10\x02\x12\x13\n\x0fPRODUCT_PARTNER\x10\x03\x12\x1f\n\x1bPRODUCT_LIBSPOTIFY_EMBEDDED\x10\x05*A\n\x0cProductFlags\x12\x15\n\x11PRODUCT_FLAG_NONE\x10\x00\x12\x1a\n\x16PRODUCT_FLAG_DEV_BUILD\x10\x01*\xdc\x04\n\x08Platform\x12\x16\n\x12PLATFORM_WIN32_X86\x10\x00\x12\x14\n\x10PLATFORM_OSX_X86\x10\x01\x12\x16\n\x12PLATFORM_LINUX_X86\x10\x02\x12\x17\n\x13PLATFORM_IPHONE_ARM\x10\x03\x12\x14\n\x10PLATFORM_S60_ARM\x10\x04\x12\x14\n\x10PLATFORM_OSX_PPC\x10\x05\x12\x18\n\x14PLATFORM_ANDROID_ARM\x10\x06\x12\x1b\n\x17PLATFORM_WINDOWS_CE_ARM\x10\x07\x12\x19\n\x15PLATFORM_LINUX_X86_64\x10\x08\x12\x17\n\x13PLATFORM_OSX_X86_64\x10\t\x12\x15\n\x11PLATFORM_PALM_ARM\x10\n\x12\x15\n\x11PLATFORM_LINUX_SH\x10\x0b\x12\x18\n\x14PLATFORM_FREEBSD_X86\x10\x0c\x12\x1b\n\x17PLATFORM_FREEBSD_X86_64\x10\r\x12\x1b\n\x17PLATFORM_BLACKBERRY_ARM\x10\x0e\x12\x12\n\x0ePLATFORM_SONOS\x10\x0f\x12\x17\n\x13PLATFORM_LINUX_MIPS\x10\x10\x12\x16\n\x12PLATFORM_LINUX_ARM\x10\x11\x12\x19\n\x15PLATFORM_LOGITECH_ARM\x10\x12\x12\x1b\n\x17PLATFORM_LINUX_BLACKFIN\x10\x13\x12\x14\n\x10PLATFORM_WP7_ARM\x10\x14\x12\x16\n\x12PLATFORM_ONKYO_ARM\x10\x15\x12\x17\n\x13PLATFORM_QNXNTO_ARM\x10\x16\x12\x14\n\x10PLATFORM_BCO_ARM\x10\x17*A\n\x0b\x46ingerprint\x12\x15\n\x11\x46INGERPRINT_GRAIN\x10\x00\x12\x1b\n\x17\x46INGERPRINT_HMAC_RIPEMD\x10\x01*G\n\x0b\x43ryptosuite\x12\x18\n\x14\x43RYPTO_SUITE_SHANNON\x10\x00\x12\x1e\n\x1a\x43RYPTO_SUITE_RC4_SHA1_HMAC\x10\x01*\x1e\n\tPowscheme\x12\x11\n\rPOW_HASH_CASH\x10\x00*\x89\x02\n\tErrorCode\x12\x11\n\rProtocolError\x10\x00\x12\x10\n\x0cTryAnotherAP\x10\x02\x12\x13\n\x0f\x42\x61\x64\x43onnectionId\x10\x05\x12\x15\n\x11TravelRestriction\x10\t\x12\x1a\n\x16PremiumAccountRequired\x10\x0b\x12\x12\n\x0e\x42\x61\x64\x43redentials\x10\x0c\x12\x1f\n\x1b\x43ouldNotValidateCredentials\x10\r\x12\x11\n\rAccountExists\x10\x0e\x12\x1d\n\x19\x45xtraVerificationRequired\x10\x0f\x12\x11\n\rInvalidAppKey\x10\x10\x12\x15\n\x11\x41pplicationBanned\x10\x11\x42\r\n\x0b\x63om.spotify' -) - -_PRODUCT = _descriptor.EnumDescriptor( - name='Product', - full_name='spotify.Product', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='PRODUCT_CLIENT', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PRODUCT_LIBSPOTIFY', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PRODUCT_MOBILE', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PRODUCT_PARTNER', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PRODUCT_LIBSPOTIFY_EMBEDDED', - index=4, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=2871, - serialized_end=2998, -) -_sym_db.RegisterEnumDescriptor(_PRODUCT) - -Product = enum_type_wrapper.EnumTypeWrapper(_PRODUCT) -_PRODUCTFLAGS = _descriptor.EnumDescriptor( - name='ProductFlags', - full_name='spotify.ProductFlags', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='PRODUCT_FLAG_NONE', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PRODUCT_FLAG_DEV_BUILD', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3000, - serialized_end=3065, -) -_sym_db.RegisterEnumDescriptor(_PRODUCTFLAGS) - -ProductFlags = enum_type_wrapper.EnumTypeWrapper(_PRODUCTFLAGS) -_PLATFORM = _descriptor.EnumDescriptor( - name='Platform', - full_name='spotify.Platform', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='PLATFORM_WIN32_X86', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_OSX_X86', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_LINUX_X86', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_IPHONE_ARM', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_S60_ARM', - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_OSX_PPC', - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_ANDROID_ARM', - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_WINDOWS_CE_ARM', - index=7, - number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_LINUX_X86_64', - index=8, - number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_OSX_X86_64', - index=9, - number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_PALM_ARM', - index=10, - number=10, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_LINUX_SH', - index=11, - number=11, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_FREEBSD_X86', - index=12, - number=12, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_FREEBSD_X86_64', - index=13, - number=13, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_BLACKBERRY_ARM', - index=14, - number=14, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_SONOS', - index=15, - number=15, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_LINUX_MIPS', - index=16, - number=16, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_LINUX_ARM', - index=17, - number=17, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_LOGITECH_ARM', - index=18, - number=18, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_LINUX_BLACKFIN', - index=19, - number=19, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_WP7_ARM', - index=20, - number=20, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_ONKYO_ARM', - index=21, - number=21, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_QNXNTO_ARM', - index=22, - number=22, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PLATFORM_BCO_ARM', - index=23, - number=23, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3068, - serialized_end=3672, -) -_sym_db.RegisterEnumDescriptor(_PLATFORM) - -Platform = enum_type_wrapper.EnumTypeWrapper(_PLATFORM) -_FINGERPRINT = _descriptor.EnumDescriptor( - name='Fingerprint', - full_name='spotify.Fingerprint', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='FINGERPRINT_GRAIN', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='FINGERPRINT_HMAC_RIPEMD', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3674, - serialized_end=3739, -) -_sym_db.RegisterEnumDescriptor(_FINGERPRINT) - -Fingerprint = enum_type_wrapper.EnumTypeWrapper(_FINGERPRINT) -_CRYPTOSUITE = _descriptor.EnumDescriptor( - name='Cryptosuite', - full_name='spotify.Cryptosuite', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='CRYPTO_SUITE_SHANNON', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CRYPTO_SUITE_RC4_SHA1_HMAC', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3741, - serialized_end=3812, -) -_sym_db.RegisterEnumDescriptor(_CRYPTOSUITE) - -Cryptosuite = enum_type_wrapper.EnumTypeWrapper(_CRYPTOSUITE) -_POWSCHEME = _descriptor.EnumDescriptor( - name='Powscheme', - full_name='spotify.Powscheme', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='POW_HASH_CASH', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3814, - serialized_end=3844, -) -_sym_db.RegisterEnumDescriptor(_POWSCHEME) - -Powscheme = enum_type_wrapper.EnumTypeWrapper(_POWSCHEME) -_ERRORCODE = _descriptor.EnumDescriptor( - name='ErrorCode', - full_name='spotify.ErrorCode', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='ProtocolError', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='TryAnotherAP', - index=1, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='BadConnectionId', - index=2, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='TravelRestriction', - index=3, - number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PremiumAccountRequired', - index=4, - number=11, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='BadCredentials', - index=5, - number=12, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CouldNotValidateCredentials', - index=6, - number=13, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AccountExists', - index=7, - number=14, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='ExtraVerificationRequired', - index=8, - number=15, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='InvalidAppKey', - index=9, - number=16, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='ApplicationBanned', - index=10, - number=17, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3847, - serialized_end=4112, -) -_sym_db.RegisterEnumDescriptor(_ERRORCODE) - -ErrorCode = enum_type_wrapper.EnumTypeWrapper(_ERRORCODE) -PRODUCT_CLIENT = 0 -PRODUCT_LIBSPOTIFY = 1 -PRODUCT_MOBILE = 2 -PRODUCT_PARTNER = 3 -PRODUCT_LIBSPOTIFY_EMBEDDED = 5 -PRODUCT_FLAG_NONE = 0 -PRODUCT_FLAG_DEV_BUILD = 1 -PLATFORM_WIN32_X86 = 0 -PLATFORM_OSX_X86 = 1 -PLATFORM_LINUX_X86 = 2 -PLATFORM_IPHONE_ARM = 3 -PLATFORM_S60_ARM = 4 -PLATFORM_OSX_PPC = 5 -PLATFORM_ANDROID_ARM = 6 -PLATFORM_WINDOWS_CE_ARM = 7 -PLATFORM_LINUX_X86_64 = 8 -PLATFORM_OSX_X86_64 = 9 -PLATFORM_PALM_ARM = 10 -PLATFORM_LINUX_SH = 11 -PLATFORM_FREEBSD_X86 = 12 -PLATFORM_FREEBSD_X86_64 = 13 -PLATFORM_BLACKBERRY_ARM = 14 -PLATFORM_SONOS = 15 -PLATFORM_LINUX_MIPS = 16 -PLATFORM_LINUX_ARM = 17 -PLATFORM_LOGITECH_ARM = 18 -PLATFORM_LINUX_BLACKFIN = 19 -PLATFORM_WP7_ARM = 20 -PLATFORM_ONKYO_ARM = 21 -PLATFORM_QNXNTO_ARM = 22 -PLATFORM_BCO_ARM = 23 -FINGERPRINT_GRAIN = 0 -FINGERPRINT_HMAC_RIPEMD = 1 -CRYPTO_SUITE_SHANNON = 0 -CRYPTO_SUITE_RC4_SHA1_HMAC = 1 -POW_HASH_CASH = 0 -ProtocolError = 0 -TryAnotherAP = 2 -BadConnectionId = 5 -TravelRestriction = 9 -PremiumAccountRequired = 11 -BadCredentials = 12 -CouldNotValidateCredentials = 13 -AccountExists = 14 -ExtraVerificationRequired = 15 -InvalidAppKey = 16 -ApplicationBanned = 17 - -_CLIENTHELLO = _descriptor.Descriptor( - name='ClientHello', - full_name='spotify.ClientHello', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='build_info', - full_name='spotify.ClientHello.build_info', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fingerprints_supported', - full_name='spotify.ClientHello.fingerprints_supported', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cryptosuites_supported', - full_name='spotify.ClientHello.cryptosuites_supported', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='powschemes_supported', - full_name='spotify.ClientHello.powschemes_supported', - index=3, - number=40, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='login_crypto_hello', - full_name='spotify.ClientHello.login_crypto_hello', - index=4, - number=50, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_nonce', - full_name='spotify.ClientHello.client_nonce', - index=5, - number=60, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='padding', - full_name='spotify.ClientHello.padding', - index=6, - number=70, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='feature_set', - full_name='spotify.ClientHello.feature_set', - index=7, - number=80, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=31, - serialized_end=383, -) - -_BUILDINFO = _descriptor.Descriptor( - name='BuildInfo', - full_name='spotify.BuildInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='product', - full_name='spotify.BuildInfo.product', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_flags', - full_name='spotify.BuildInfo.product_flags', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='platform', - full_name='spotify.BuildInfo.platform', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version', - full_name='spotify.BuildInfo.version', - index=3, - number=40, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=386, - serialized_end=532, -) - -_LOGINCRYPTOHELLOUNION = _descriptor.Descriptor( - name='LoginCryptoHelloUnion', - full_name='spotify.LoginCryptoHelloUnion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='diffie_hellman', - full_name='spotify.LoginCryptoHelloUnion.diffie_hellman', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=534, - serialized_end=621, -) - -_LOGINCRYPTODIFFIEHELLMANHELLO = _descriptor.Descriptor( - name='LoginCryptoDiffieHellmanHello', - full_name='spotify.LoginCryptoDiffieHellmanHello', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='gc', - full_name='spotify.LoginCryptoDiffieHellmanHello.gc', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='server_keys_known', - full_name='spotify.LoginCryptoDiffieHellmanHello.server_keys_known', - index=1, - number=20, - type=13, - cpp_type=3, - label=2, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=623, - serialized_end=693, -) - -_FEATURESET = _descriptor.Descriptor( - name='FeatureSet', - full_name='spotify.FeatureSet', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='autoupdate2', - full_name='spotify.FeatureSet.autoupdate2', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='current_location', - full_name='spotify.FeatureSet.current_location', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=695, - serialized_end=754, -) - -_APRESPONSEMESSAGE = _descriptor.Descriptor( - name='APResponseMessage', - full_name='spotify.APResponseMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='challenge', - full_name='spotify.APResponseMessage.challenge', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='upgrade', - full_name='spotify.APResponseMessage.upgrade', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='login_failed', - full_name='spotify.APResponseMessage.login_failed', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=757, - serialized_end=913, -) - -_APCHALLENGE = _descriptor.Descriptor( - name='APChallenge', - full_name='spotify.APChallenge', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='login_crypto_challenge', - full_name='spotify.APChallenge.login_crypto_challenge', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fingerprint_challenge', - full_name='spotify.APChallenge.fingerprint_challenge', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pow_challenge', - full_name='spotify.APChallenge.pow_challenge', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crypto_challenge', - full_name='spotify.APChallenge.crypto_challenge', - index=3, - number=40, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='server_nonce', - full_name='spotify.APChallenge.server_nonce', - index=4, - number=50, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='padding', - full_name='spotify.APChallenge.padding', - index=5, - number=60, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=916, - serialized_end=1211, -) - -_LOGINCRYPTOCHALLENGEUNION = _descriptor.Descriptor( - name='LoginCryptoChallengeUnion', - full_name='spotify.LoginCryptoChallengeUnion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='diffie_hellman', - full_name='spotify.LoginCryptoChallengeUnion.diffie_hellman', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1213, - serialized_end=1308, -) - -_LOGINCRYPTODIFFIEHELLMANCHALLENGE = _descriptor.Descriptor( - name='LoginCryptoDiffieHellmanChallenge', - full_name='spotify.LoginCryptoDiffieHellmanChallenge', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='gs', - full_name='spotify.LoginCryptoDiffieHellmanChallenge.gs', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='server_signature_key', - full_name= - 'spotify.LoginCryptoDiffieHellmanChallenge.server_signature_key', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='gs_signature', - full_name='spotify.LoginCryptoDiffieHellmanChallenge.gs_signature', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1310, - serialized_end=1409, -) - -_FINGERPRINTCHALLENGEUNION = _descriptor.Descriptor( - name='FingerprintChallengeUnion', - full_name='spotify.FingerprintChallengeUnion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='grain', - full_name='spotify.FingerprintChallengeUnion.grain', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='hmac_ripemd', - full_name='spotify.FingerprintChallengeUnion.hmac_ripemd', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1412, - serialized_end=1552, -) - -_FINGERPRINTGRAINCHALLENGE = _descriptor.Descriptor( - name='FingerprintGrainChallenge', - full_name='spotify.FingerprintGrainChallenge', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='kek', - full_name='spotify.FingerprintGrainChallenge.kek', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1554, - serialized_end=1594, -) - -_FINGERPRINTHMACRIPEMDCHALLENGE = _descriptor.Descriptor( - name='FingerprintHmacRipemdChallenge', - full_name='spotify.FingerprintHmacRipemdChallenge', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='challenge', - full_name='spotify.FingerprintHmacRipemdChallenge.challenge', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1596, - serialized_end=1647, -) - -_POWCHALLENGEUNION = _descriptor.Descriptor( - name='PoWChallengeUnion', - full_name='spotify.PoWChallengeUnion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='hash_cash', - full_name='spotify.PoWChallengeUnion.hash_cash', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1649, - serialized_end=1718, -) - -_POWHASHCASHCHALLENGE = _descriptor.Descriptor( - name='PoWHashCashChallenge', - full_name='spotify.PoWHashCashChallenge', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='prefix', - full_name='spotify.PoWHashCashChallenge.prefix', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='length', - full_name='spotify.PoWHashCashChallenge.length', - index=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='target', - full_name='spotify.PoWHashCashChallenge.target', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1720, - serialized_end=1790, -) - -_CRYPTOCHALLENGEUNION = _descriptor.Descriptor( - name='CryptoChallengeUnion', - full_name='spotify.CryptoChallengeUnion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='shannon', - full_name='spotify.CryptoChallengeUnion.shannon', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rc4_sha1_hmac', - full_name='spotify.CryptoChallengeUnion.rc4_sha1_hmac', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1793, - serialized_end=1925, -) - -_CRYPTOSHANNONCHALLENGE = _descriptor.Descriptor( - name='CryptoShannonChallenge', - full_name='spotify.CryptoShannonChallenge', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1927, - serialized_end=1951, -) - -_CRYPTORC4SHA1HMACCHALLENGE = _descriptor.Descriptor( - name='CryptoRc4Sha1HmacChallenge', - full_name='spotify.CryptoRc4Sha1HmacChallenge', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1953, - serialized_end=1981, -) - -_UPGRADEREQUIREDMESSAGE = _descriptor.Descriptor( - name='UpgradeRequiredMessage', - full_name='spotify.UpgradeRequiredMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='upgrade_signed_part', - full_name='spotify.UpgradeRequiredMessage.upgrade_signed_part', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='signature', - full_name='spotify.UpgradeRequiredMessage.signature', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='http_suffix', - full_name='spotify.UpgradeRequiredMessage.http_suffix', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1983, - serialized_end=2076, -) - -_APLOGINFAILED = _descriptor.Descriptor( - name='APLoginFailed', - full_name='spotify.APLoginFailed', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='error_code', - full_name='spotify.APLoginFailed.error_code', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='retry_delay', - full_name='spotify.APLoginFailed.retry_delay', - index=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='expiry', - full_name='spotify.APLoginFailed.expiry', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='error_description', - full_name='spotify.APLoginFailed.error_description', - index=3, - number=40, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2078, - serialized_end=2197, -) - -_CLIENTRESPONSEPLAINTEXT = _descriptor.Descriptor( - name='ClientResponsePlaintext', - full_name='spotify.ClientResponsePlaintext', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='login_crypto_response', - full_name='spotify.ClientResponsePlaintext.login_crypto_response', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pow_response', - full_name='spotify.ClientResponsePlaintext.pow_response', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crypto_response', - full_name='spotify.ClientResponsePlaintext.crypto_response', - index=2, - number=30, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2200, - serialized_end=2395, -) - -_LOGINCRYPTORESPONSEUNION = _descriptor.Descriptor( - name='LoginCryptoResponseUnion', - full_name='spotify.LoginCryptoResponseUnion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='diffie_hellman', - full_name='spotify.LoginCryptoResponseUnion.diffie_hellman', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2397, - serialized_end=2490, -) - -_LOGINCRYPTODIFFIEHELLMANRESPONSE = _descriptor.Descriptor( - name='LoginCryptoDiffieHellmanResponse', - full_name='spotify.LoginCryptoDiffieHellmanResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='hmac', - full_name='spotify.LoginCryptoDiffieHellmanResponse.hmac', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2492, - serialized_end=2540, -) - -_POWRESPONSEUNION = _descriptor.Descriptor( - name='PoWResponseUnion', - full_name='spotify.PoWResponseUnion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='hash_cash', - full_name='spotify.PoWResponseUnion.hash_cash', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2542, - serialized_end=2609, -) - -_POWHASHCASHRESPONSE = _descriptor.Descriptor( - name='PoWHashCashResponse', - full_name='spotify.PoWHashCashResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='hash_suffix', - full_name='spotify.PoWHashCashResponse.hash_suffix', - index=0, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2611, - serialized_end=2653, -) - -_CRYPTORESPONSEUNION = _descriptor.Descriptor( - name='CryptoResponseUnion', - full_name='spotify.CryptoResponseUnion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='shannon', - full_name='spotify.CryptoResponseUnion.shannon', - index=0, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rc4_sha1_hmac', - full_name='spotify.CryptoResponseUnion.rc4_sha1_hmac', - index=1, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2656, - serialized_end=2785, -) - -_CRYPTOSHANNONRESPONSE = _descriptor.Descriptor( - name='CryptoShannonResponse', - full_name='spotify.CryptoShannonResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='dummy', - full_name='spotify.CryptoShannonResponse.dummy', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2787, - serialized_end=2825, -) - -_CRYPTORC4SHA1HMACRESPONSE = _descriptor.Descriptor( - name='CryptoRc4Sha1HmacResponse', - full_name='spotify.CryptoRc4Sha1HmacResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='dummy', - full_name='spotify.CryptoRc4Sha1HmacResponse.dummy', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2827, - serialized_end=2869, -) - -_CLIENTHELLO.fields_by_name['build_info'].message_type = _BUILDINFO -_CLIENTHELLO.fields_by_name['fingerprints_supported'].enum_type = _FINGERPRINT -_CLIENTHELLO.fields_by_name['cryptosuites_supported'].enum_type = _CRYPTOSUITE -_CLIENTHELLO.fields_by_name['powschemes_supported'].enum_type = _POWSCHEME -_CLIENTHELLO.fields_by_name[ - 'login_crypto_hello'].message_type = _LOGINCRYPTOHELLOUNION -_CLIENTHELLO.fields_by_name['feature_set'].message_type = _FEATURESET -_BUILDINFO.fields_by_name['product'].enum_type = _PRODUCT -_BUILDINFO.fields_by_name['product_flags'].enum_type = _PRODUCTFLAGS -_BUILDINFO.fields_by_name['platform'].enum_type = _PLATFORM -_LOGINCRYPTOHELLOUNION.fields_by_name[ - 'diffie_hellman'].message_type = _LOGINCRYPTODIFFIEHELLMANHELLO -_APRESPONSEMESSAGE.fields_by_name['challenge'].message_type = _APCHALLENGE -_APRESPONSEMESSAGE.fields_by_name[ - 'upgrade'].message_type = _UPGRADEREQUIREDMESSAGE -_APRESPONSEMESSAGE.fields_by_name['login_failed'].message_type = _APLOGINFAILED -_APCHALLENGE.fields_by_name[ - 'login_crypto_challenge'].message_type = _LOGINCRYPTOCHALLENGEUNION -_APCHALLENGE.fields_by_name[ - 'fingerprint_challenge'].message_type = _FINGERPRINTCHALLENGEUNION -_APCHALLENGE.fields_by_name['pow_challenge'].message_type = _POWCHALLENGEUNION -_APCHALLENGE.fields_by_name[ - 'crypto_challenge'].message_type = _CRYPTOCHALLENGEUNION -_LOGINCRYPTOCHALLENGEUNION.fields_by_name[ - 'diffie_hellman'].message_type = _LOGINCRYPTODIFFIEHELLMANCHALLENGE -_FINGERPRINTCHALLENGEUNION.fields_by_name[ - 'grain'].message_type = _FINGERPRINTGRAINCHALLENGE -_FINGERPRINTCHALLENGEUNION.fields_by_name[ - 'hmac_ripemd'].message_type = _FINGERPRINTHMACRIPEMDCHALLENGE -_POWCHALLENGEUNION.fields_by_name[ - 'hash_cash'].message_type = _POWHASHCASHCHALLENGE -_CRYPTOCHALLENGEUNION.fields_by_name[ - 'shannon'].message_type = _CRYPTOSHANNONCHALLENGE -_CRYPTOCHALLENGEUNION.fields_by_name[ - 'rc4_sha1_hmac'].message_type = _CRYPTORC4SHA1HMACCHALLENGE -_APLOGINFAILED.fields_by_name['error_code'].enum_type = _ERRORCODE -_CLIENTRESPONSEPLAINTEXT.fields_by_name[ - 'login_crypto_response'].message_type = _LOGINCRYPTORESPONSEUNION -_CLIENTRESPONSEPLAINTEXT.fields_by_name[ - 'pow_response'].message_type = _POWRESPONSEUNION -_CLIENTRESPONSEPLAINTEXT.fields_by_name[ - 'crypto_response'].message_type = _CRYPTORESPONSEUNION -_LOGINCRYPTORESPONSEUNION.fields_by_name[ - 'diffie_hellman'].message_type = _LOGINCRYPTODIFFIEHELLMANRESPONSE -_POWRESPONSEUNION.fields_by_name[ - 'hash_cash'].message_type = _POWHASHCASHRESPONSE -_CRYPTORESPONSEUNION.fields_by_name[ - 'shannon'].message_type = _CRYPTOSHANNONRESPONSE -_CRYPTORESPONSEUNION.fields_by_name[ - 'rc4_sha1_hmac'].message_type = _CRYPTORC4SHA1HMACRESPONSE -DESCRIPTOR.message_types_by_name['ClientHello'] = _CLIENTHELLO -DESCRIPTOR.message_types_by_name['BuildInfo'] = _BUILDINFO -DESCRIPTOR.message_types_by_name[ - 'LoginCryptoHelloUnion'] = _LOGINCRYPTOHELLOUNION -DESCRIPTOR.message_types_by_name[ - 'LoginCryptoDiffieHellmanHello'] = _LOGINCRYPTODIFFIEHELLMANHELLO -DESCRIPTOR.message_types_by_name['FeatureSet'] = _FEATURESET -DESCRIPTOR.message_types_by_name['APResponseMessage'] = _APRESPONSEMESSAGE -DESCRIPTOR.message_types_by_name['APChallenge'] = _APCHALLENGE -DESCRIPTOR.message_types_by_name[ - 'LoginCryptoChallengeUnion'] = _LOGINCRYPTOCHALLENGEUNION -DESCRIPTOR.message_types_by_name[ - 'LoginCryptoDiffieHellmanChallenge'] = _LOGINCRYPTODIFFIEHELLMANCHALLENGE -DESCRIPTOR.message_types_by_name[ - 'FingerprintChallengeUnion'] = _FINGERPRINTCHALLENGEUNION -DESCRIPTOR.message_types_by_name[ - 'FingerprintGrainChallenge'] = _FINGERPRINTGRAINCHALLENGE -DESCRIPTOR.message_types_by_name[ - 'FingerprintHmacRipemdChallenge'] = _FINGERPRINTHMACRIPEMDCHALLENGE -DESCRIPTOR.message_types_by_name['PoWChallengeUnion'] = _POWCHALLENGEUNION -DESCRIPTOR.message_types_by_name[ - 'PoWHashCashChallenge'] = _POWHASHCASHCHALLENGE -DESCRIPTOR.message_types_by_name[ - 'CryptoChallengeUnion'] = _CRYPTOCHALLENGEUNION -DESCRIPTOR.message_types_by_name[ - 'CryptoShannonChallenge'] = _CRYPTOSHANNONCHALLENGE -DESCRIPTOR.message_types_by_name[ - 'CryptoRc4Sha1HmacChallenge'] = _CRYPTORC4SHA1HMACCHALLENGE -DESCRIPTOR.message_types_by_name[ - 'UpgradeRequiredMessage'] = _UPGRADEREQUIREDMESSAGE -DESCRIPTOR.message_types_by_name['APLoginFailed'] = _APLOGINFAILED -DESCRIPTOR.message_types_by_name[ - 'ClientResponsePlaintext'] = _CLIENTRESPONSEPLAINTEXT -DESCRIPTOR.message_types_by_name[ - 'LoginCryptoResponseUnion'] = _LOGINCRYPTORESPONSEUNION -DESCRIPTOR.message_types_by_name[ - 'LoginCryptoDiffieHellmanResponse'] = _LOGINCRYPTODIFFIEHELLMANRESPONSE -DESCRIPTOR.message_types_by_name['PoWResponseUnion'] = _POWRESPONSEUNION -DESCRIPTOR.message_types_by_name['PoWHashCashResponse'] = _POWHASHCASHRESPONSE -DESCRIPTOR.message_types_by_name['CryptoResponseUnion'] = _CRYPTORESPONSEUNION -DESCRIPTOR.message_types_by_name[ - 'CryptoShannonResponse'] = _CRYPTOSHANNONRESPONSE -DESCRIPTOR.message_types_by_name[ - 'CryptoRc4Sha1HmacResponse'] = _CRYPTORC4SHA1HMACRESPONSE -DESCRIPTOR.enum_types_by_name['Product'] = _PRODUCT -DESCRIPTOR.enum_types_by_name['ProductFlags'] = _PRODUCTFLAGS -DESCRIPTOR.enum_types_by_name['Platform'] = _PLATFORM -DESCRIPTOR.enum_types_by_name['Fingerprint'] = _FINGERPRINT -DESCRIPTOR.enum_types_by_name['Cryptosuite'] = _CRYPTOSUITE -DESCRIPTOR.enum_types_by_name['Powscheme'] = _POWSCHEME -DESCRIPTOR.enum_types_by_name['ErrorCode'] = _ERRORCODE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -ClientHello = _reflection.GeneratedProtocolMessageType( - 'ClientHello', - (_message.Message, ), - { - 'DESCRIPTOR': _CLIENTHELLO, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.ClientHello) - }) -_sym_db.RegisterMessage(ClientHello) - -BuildInfo = _reflection.GeneratedProtocolMessageType( - 'BuildInfo', - (_message.Message, ), - { - 'DESCRIPTOR': _BUILDINFO, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.BuildInfo) - }) -_sym_db.RegisterMessage(BuildInfo) - -LoginCryptoHelloUnion = _reflection.GeneratedProtocolMessageType( - 'LoginCryptoHelloUnion', - (_message.Message, ), - { - 'DESCRIPTOR': _LOGINCRYPTOHELLOUNION, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.LoginCryptoHelloUnion) - }) -_sym_db.RegisterMessage(LoginCryptoHelloUnion) - -LoginCryptoDiffieHellmanHello = _reflection.GeneratedProtocolMessageType( - 'LoginCryptoDiffieHellmanHello', - (_message.Message, ), - { - 'DESCRIPTOR': _LOGINCRYPTODIFFIEHELLMANHELLO, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.LoginCryptoDiffieHellmanHello) - }) -_sym_db.RegisterMessage(LoginCryptoDiffieHellmanHello) - -FeatureSet = _reflection.GeneratedProtocolMessageType( - 'FeatureSet', - (_message.Message, ), - { - 'DESCRIPTOR': _FEATURESET, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.FeatureSet) - }) -_sym_db.RegisterMessage(FeatureSet) - -APResponseMessage = _reflection.GeneratedProtocolMessageType( - 'APResponseMessage', - (_message.Message, ), - { - 'DESCRIPTOR': _APRESPONSEMESSAGE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.APResponseMessage) - }) -_sym_db.RegisterMessage(APResponseMessage) - -APChallenge = _reflection.GeneratedProtocolMessageType( - 'APChallenge', - (_message.Message, ), - { - 'DESCRIPTOR': _APCHALLENGE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.APChallenge) - }) -_sym_db.RegisterMessage(APChallenge) - -LoginCryptoChallengeUnion = _reflection.GeneratedProtocolMessageType( - 'LoginCryptoChallengeUnion', - (_message.Message, ), - { - 'DESCRIPTOR': _LOGINCRYPTOCHALLENGEUNION, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.LoginCryptoChallengeUnion) - }) -_sym_db.RegisterMessage(LoginCryptoChallengeUnion) - -LoginCryptoDiffieHellmanChallenge = _reflection.GeneratedProtocolMessageType( - 'LoginCryptoDiffieHellmanChallenge', - (_message.Message, ), - { - 'DESCRIPTOR': _LOGINCRYPTODIFFIEHELLMANCHALLENGE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.LoginCryptoDiffieHellmanChallenge) - }) -_sym_db.RegisterMessage(LoginCryptoDiffieHellmanChallenge) - -FingerprintChallengeUnion = _reflection.GeneratedProtocolMessageType( - 'FingerprintChallengeUnion', - (_message.Message, ), - { - 'DESCRIPTOR': _FINGERPRINTCHALLENGEUNION, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.FingerprintChallengeUnion) - }) -_sym_db.RegisterMessage(FingerprintChallengeUnion) - -FingerprintGrainChallenge = _reflection.GeneratedProtocolMessageType( - 'FingerprintGrainChallenge', - (_message.Message, ), - { - 'DESCRIPTOR': _FINGERPRINTGRAINCHALLENGE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.FingerprintGrainChallenge) - }) -_sym_db.RegisterMessage(FingerprintGrainChallenge) - -FingerprintHmacRipemdChallenge = _reflection.GeneratedProtocolMessageType( - 'FingerprintHmacRipemdChallenge', - (_message.Message, ), - { - 'DESCRIPTOR': _FINGERPRINTHMACRIPEMDCHALLENGE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.FingerprintHmacRipemdChallenge) - }) -_sym_db.RegisterMessage(FingerprintHmacRipemdChallenge) - -PoWChallengeUnion = _reflection.GeneratedProtocolMessageType( - 'PoWChallengeUnion', - (_message.Message, ), - { - 'DESCRIPTOR': _POWCHALLENGEUNION, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.PoWChallengeUnion) - }) -_sym_db.RegisterMessage(PoWChallengeUnion) - -PoWHashCashChallenge = _reflection.GeneratedProtocolMessageType( - 'PoWHashCashChallenge', - (_message.Message, ), - { - 'DESCRIPTOR': _POWHASHCASHCHALLENGE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.PoWHashCashChallenge) - }) -_sym_db.RegisterMessage(PoWHashCashChallenge) - -CryptoChallengeUnion = _reflection.GeneratedProtocolMessageType( - 'CryptoChallengeUnion', - (_message.Message, ), - { - 'DESCRIPTOR': _CRYPTOCHALLENGEUNION, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.CryptoChallengeUnion) - }) -_sym_db.RegisterMessage(CryptoChallengeUnion) - -CryptoShannonChallenge = _reflection.GeneratedProtocolMessageType( - 'CryptoShannonChallenge', - (_message.Message, ), - { - 'DESCRIPTOR': _CRYPTOSHANNONCHALLENGE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.CryptoShannonChallenge) - }) -_sym_db.RegisterMessage(CryptoShannonChallenge) - -CryptoRc4Sha1HmacChallenge = _reflection.GeneratedProtocolMessageType( - 'CryptoRc4Sha1HmacChallenge', - (_message.Message, ), - { - 'DESCRIPTOR': _CRYPTORC4SHA1HMACCHALLENGE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.CryptoRc4Sha1HmacChallenge) - }) -_sym_db.RegisterMessage(CryptoRc4Sha1HmacChallenge) - -UpgradeRequiredMessage = _reflection.GeneratedProtocolMessageType( - 'UpgradeRequiredMessage', - (_message.Message, ), - { - 'DESCRIPTOR': _UPGRADEREQUIREDMESSAGE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.UpgradeRequiredMessage) - }) -_sym_db.RegisterMessage(UpgradeRequiredMessage) - -APLoginFailed = _reflection.GeneratedProtocolMessageType( - 'APLoginFailed', - (_message.Message, ), - { - 'DESCRIPTOR': _APLOGINFAILED, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.APLoginFailed) - }) -_sym_db.RegisterMessage(APLoginFailed) - -ClientResponsePlaintext = _reflection.GeneratedProtocolMessageType( - 'ClientResponsePlaintext', - (_message.Message, ), - { - 'DESCRIPTOR': _CLIENTRESPONSEPLAINTEXT, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.ClientResponsePlaintext) - }) -_sym_db.RegisterMessage(ClientResponsePlaintext) - -LoginCryptoResponseUnion = _reflection.GeneratedProtocolMessageType( - 'LoginCryptoResponseUnion', - (_message.Message, ), - { - 'DESCRIPTOR': _LOGINCRYPTORESPONSEUNION, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.LoginCryptoResponseUnion) - }) -_sym_db.RegisterMessage(LoginCryptoResponseUnion) - -LoginCryptoDiffieHellmanResponse = _reflection.GeneratedProtocolMessageType( - 'LoginCryptoDiffieHellmanResponse', - (_message.Message, ), - { - 'DESCRIPTOR': _LOGINCRYPTODIFFIEHELLMANRESPONSE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.LoginCryptoDiffieHellmanResponse) - }) -_sym_db.RegisterMessage(LoginCryptoDiffieHellmanResponse) - -PoWResponseUnion = _reflection.GeneratedProtocolMessageType( - 'PoWResponseUnion', - (_message.Message, ), - { - 'DESCRIPTOR': _POWRESPONSEUNION, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.PoWResponseUnion) - }) -_sym_db.RegisterMessage(PoWResponseUnion) - -PoWHashCashResponse = _reflection.GeneratedProtocolMessageType( - 'PoWHashCashResponse', - (_message.Message, ), - { - 'DESCRIPTOR': _POWHASHCASHRESPONSE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.PoWHashCashResponse) - }) -_sym_db.RegisterMessage(PoWHashCashResponse) - -CryptoResponseUnion = _reflection.GeneratedProtocolMessageType( - 'CryptoResponseUnion', - (_message.Message, ), - { - 'DESCRIPTOR': _CRYPTORESPONSEUNION, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.CryptoResponseUnion) - }) -_sym_db.RegisterMessage(CryptoResponseUnion) - -CryptoShannonResponse = _reflection.GeneratedProtocolMessageType( - 'CryptoShannonResponse', - (_message.Message, ), - { - 'DESCRIPTOR': _CRYPTOSHANNONRESPONSE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.CryptoShannonResponse) - }) -_sym_db.RegisterMessage(CryptoShannonResponse) - -CryptoRc4Sha1HmacResponse = _reflection.GeneratedProtocolMessageType( - 'CryptoRc4Sha1HmacResponse', - (_message.Message, ), - { - 'DESCRIPTOR': _CRYPTORC4SHA1HMACRESPONSE, - '__module__': 'keyexchange_pb2' - # @@protoc_insertion_point(class_scope:spotify.CryptoRc4Sha1HmacResponse) - }) -_sym_db.RegisterMessage(CryptoRc4Sha1HmacResponse) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Mercury_pb2.py b/librespot/proto/Mercury_pb2.py deleted file mode 100644 index 8109c9f..0000000 --- a/librespot/proto/Mercury_pb2.py +++ /dev/null @@ -1,625 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: mercury.proto -"""Generated protocol buffer code.""" -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 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name='mercury.proto', - package='spotify', - syntax='proto2', - serialized_options=b'\n\013com.spotify', - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\rmercury.proto\x12\x07spotify\"B\n\x16MercuryMultiGetRequest\x12(\n\x07request\x18\x01 \x03(\x0b\x32\x17.spotify.MercuryRequest\"<\n\x14MercuryMultiGetReply\x12$\n\x05reply\x18\x01 \x03(\x0b\x32\x15.spotify.MercuryReply\"O\n\x0eMercuryRequest\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x14\n\x0c\x63ontent_type\x18\x02 \x01(\t\x12\x0c\n\x04\x62ody\x18\x03 \x01(\x0c\x12\x0c\n\x04\x65tag\x18\x04 \x01(\x0c\"\xf5\x01\n\x0cMercuryReply\x12\x13\n\x0bstatus_code\x18\x01 \x01(\x11\x12\x16\n\x0estatus_message\x18\x02 \x01(\t\x12\x37\n\x0c\x63\x61\x63he_policy\x18\x03 \x01(\x0e\x32!.spotify.MercuryReply.CachePolicy\x12\x0b\n\x03ttl\x18\x04 \x01(\x11\x12\x0c\n\x04\x65tag\x18\x05 \x01(\x0c\x12\x14\n\x0c\x63ontent_type\x18\x06 \x01(\t\x12\x0c\n\x04\x62ody\x18\x07 \x01(\x0c\"@\n\x0b\x43\x61\x63hePolicy\x12\x0c\n\x08\x43\x41\x43HE_NO\x10\x01\x12\x11\n\rCACHE_PRIVATE\x10\x02\x12\x10\n\x0c\x43\x41\x43HE_PUBLIC\x10\x03\"y\n\x06Header\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x14\n\x0c\x63ontent_type\x18\x02 \x01(\t\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x13\n\x0bstatus_code\x18\x04 \x01(\x11\x12\'\n\x0buser_fields\x18\x06 \x03(\x0b\x32\x12.spotify.UserField\"\'\n\tUserField\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\x42\r\n\x0b\x63om.spotify' -) - -_MERCURYREPLY_CACHEPOLICY = _descriptor.EnumDescriptor( - name='CachePolicy', - full_name='spotify.MercuryReply.CachePolicy', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='CACHE_NO', - index=0, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CACHE_PRIVATE', - index=1, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CACHE_PUBLIC', - index=2, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=419, - serialized_end=483, -) -_sym_db.RegisterEnumDescriptor(_MERCURYREPLY_CACHEPOLICY) - -_MERCURYMULTIGETREQUEST = _descriptor.Descriptor( - name='MercuryMultiGetRequest', - full_name='spotify.MercuryMultiGetRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='request', - full_name='spotify.MercuryMultiGetRequest.request', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=26, - serialized_end=92, -) - -_MERCURYMULTIGETREPLY = _descriptor.Descriptor( - name='MercuryMultiGetReply', - full_name='spotify.MercuryMultiGetReply', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='reply', - full_name='spotify.MercuryMultiGetReply.reply', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=94, - serialized_end=154, -) - -_MERCURYREQUEST = _descriptor.Descriptor( - name='MercuryRequest', - full_name='spotify.MercuryRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uri', - full_name='spotify.MercuryRequest.uri', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content_type', - full_name='spotify.MercuryRequest.content_type', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='body', - full_name='spotify.MercuryRequest.body', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='etag', - full_name='spotify.MercuryRequest.etag', - index=3, - number=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=156, - serialized_end=235, -) - -_MERCURYREPLY = _descriptor.Descriptor( - name='MercuryReply', - full_name='spotify.MercuryReply', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='status_code', - full_name='spotify.MercuryReply.status_code', - index=0, - number=1, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='status_message', - full_name='spotify.MercuryReply.status_message', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cache_policy', - full_name='spotify.MercuryReply.cache_policy', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ttl', - full_name='spotify.MercuryReply.ttl', - index=3, - number=4, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='etag', - full_name='spotify.MercuryReply.etag', - index=4, - number=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content_type', - full_name='spotify.MercuryReply.content_type', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='body', - full_name='spotify.MercuryReply.body', - index=6, - number=7, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[ - _MERCURYREPLY_CACHEPOLICY, - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=238, - serialized_end=483, -) - -_HEADER = _descriptor.Descriptor( - name='Header', - full_name='spotify.Header', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uri', - full_name='spotify.Header.uri', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content_type', - full_name='spotify.Header.content_type', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='method', - full_name='spotify.Header.method', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='status_code', - full_name='spotify.Header.status_code', - index=3, - number=4, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='user_fields', - full_name='spotify.Header.user_fields', - index=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=485, - serialized_end=606, -) - -_USERFIELD = _descriptor.Descriptor( - name='UserField', - full_name='spotify.UserField', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', - full_name='spotify.UserField.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', - full_name='spotify.UserField.value', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=608, - serialized_end=647, -) - -_MERCURYMULTIGETREQUEST.fields_by_name[ - 'request'].message_type = _MERCURYREQUEST -_MERCURYMULTIGETREPLY.fields_by_name['reply'].message_type = _MERCURYREPLY -_MERCURYREPLY.fields_by_name[ - 'cache_policy'].enum_type = _MERCURYREPLY_CACHEPOLICY -_MERCURYREPLY_CACHEPOLICY.containing_type = _MERCURYREPLY -_HEADER.fields_by_name['user_fields'].message_type = _USERFIELD -DESCRIPTOR.message_types_by_name[ - 'MercuryMultiGetRequest'] = _MERCURYMULTIGETREQUEST -DESCRIPTOR.message_types_by_name[ - 'MercuryMultiGetReply'] = _MERCURYMULTIGETREPLY -DESCRIPTOR.message_types_by_name['MercuryRequest'] = _MERCURYREQUEST -DESCRIPTOR.message_types_by_name['MercuryReply'] = _MERCURYREPLY -DESCRIPTOR.message_types_by_name['Header'] = _HEADER -DESCRIPTOR.message_types_by_name['UserField'] = _USERFIELD -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -MercuryMultiGetRequest = _reflection.GeneratedProtocolMessageType( - 'MercuryMultiGetRequest', - (_message.Message, ), - { - 'DESCRIPTOR': _MERCURYMULTIGETREQUEST, - '__module__': 'mercury_pb2' - # @@protoc_insertion_point(class_scope:spotify.MercuryMultiGetRequest) - }) -_sym_db.RegisterMessage(MercuryMultiGetRequest) - -MercuryMultiGetReply = _reflection.GeneratedProtocolMessageType( - 'MercuryMultiGetReply', - (_message.Message, ), - { - 'DESCRIPTOR': _MERCURYMULTIGETREPLY, - '__module__': 'mercury_pb2' - # @@protoc_insertion_point(class_scope:spotify.MercuryMultiGetReply) - }) -_sym_db.RegisterMessage(MercuryMultiGetReply) - -MercuryRequest = _reflection.GeneratedProtocolMessageType( - 'MercuryRequest', - (_message.Message, ), - { - 'DESCRIPTOR': _MERCURYREQUEST, - '__module__': 'mercury_pb2' - # @@protoc_insertion_point(class_scope:spotify.MercuryRequest) - }) -_sym_db.RegisterMessage(MercuryRequest) - -MercuryReply = _reflection.GeneratedProtocolMessageType( - 'MercuryReply', - (_message.Message, ), - { - 'DESCRIPTOR': _MERCURYREPLY, - '__module__': 'mercury_pb2' - # @@protoc_insertion_point(class_scope:spotify.MercuryReply) - }) -_sym_db.RegisterMessage(MercuryReply) - -Header = _reflection.GeneratedProtocolMessageType( - 'Header', - (_message.Message, ), - { - 'DESCRIPTOR': _HEADER, - '__module__': 'mercury_pb2' - # @@protoc_insertion_point(class_scope:spotify.Header) - }) -_sym_db.RegisterMessage(Header) - -UserField = _reflection.GeneratedProtocolMessageType( - 'UserField', - (_message.Message, ), - { - 'DESCRIPTOR': _USERFIELD, - '__module__': 'mercury_pb2' - # @@protoc_insertion_point(class_scope:spotify.UserField) - }) -_sym_db.RegisterMessage(UserField) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Metadata_pb2.py b/librespot/proto/Metadata_pb2.py deleted file mode 100644 index e8ac38c..0000000 --- a/librespot/proto/Metadata_pb2.py +++ /dev/null @@ -1,3698 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: metadata.proto -"""Generated protocol buffer code.""" -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 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name='metadata.proto', - package='spotify.metadata.proto', - syntax='proto2', - serialized_options=b'\n\024com.spotify.metadataB\010MetadataH\002', - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x0emetadata.proto\x12\x16spotify.metadata.proto\"\x8a\x07\n\x06\x41rtist\x12\x0b\n\x03gid\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\npopularity\x18\x03 \x01(\x11\x12\x34\n\ttop_track\x18\x04 \x03(\x0b\x32!.spotify.metadata.proto.TopTracks\x12\x37\n\x0b\x61lbum_group\x18\x05 \x03(\x0b\x32\".spotify.metadata.proto.AlbumGroup\x12\x38\n\x0csingle_group\x18\x06 \x03(\x0b\x32\".spotify.metadata.proto.AlbumGroup\x12=\n\x11\x63ompilation_group\x18\x07 \x03(\x0b\x32\".spotify.metadata.proto.AlbumGroup\x12<\n\x10\x61ppears_on_group\x18\x08 \x03(\x0b\x32\".spotify.metadata.proto.AlbumGroup\x12\r\n\x05genre\x18\t \x03(\t\x12\x37\n\x0b\x65xternal_id\x18\n \x03(\x0b\x32\".spotify.metadata.proto.ExternalId\x12/\n\x08portrait\x18\x0b \x03(\x0b\x32\x1d.spotify.metadata.proto.Image\x12\x34\n\tbiography\x18\x0c \x03(\x0b\x32!.spotify.metadata.proto.Biography\x12?\n\x0f\x61\x63tivity_period\x18\r \x03(\x0b\x32&.spotify.metadata.proto.ActivityPeriod\x12\x38\n\x0brestriction\x18\x0e \x03(\x0b\x32#.spotify.metadata.proto.Restriction\x12/\n\x07related\x18\x0f \x03(\x0b\x32\x1e.spotify.metadata.proto.Artist\x12\x1f\n\x17is_portrait_album_cover\x18\x10 \x01(\x08\x12:\n\x0eportrait_group\x18\x11 \x01(\x0b\x32\".spotify.metadata.proto.ImageGroup\x12\x37\n\x0bsale_period\x18\x12 \x03(\x0b\x32\".spotify.metadata.proto.SalePeriod\x12:\n\x0c\x61vailability\x18\x14 \x03(\x0b\x32$.spotify.metadata.proto.Availability\"\xe8\x06\n\x05\x41lbum\x12\x0b\n\x03gid\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\t\x12.\n\x06\x61rtist\x18\x03 \x03(\x0b\x32\x1e.spotify.metadata.proto.Artist\x12\x30\n\x04type\x18\x04 \x01(\x0e\x32\".spotify.metadata.proto.Album.Type\x12\r\n\x05label\x18\x05 \x01(\t\x12*\n\x04\x64\x61te\x18\x06 \x01(\x0b\x32\x1c.spotify.metadata.proto.Date\x12\x12\n\npopularity\x18\x07 \x01(\x11\x12\r\n\x05genre\x18\x08 \x03(\t\x12,\n\x05\x63over\x18\t \x03(\x0b\x32\x1d.spotify.metadata.proto.Image\x12\x37\n\x0b\x65xternal_id\x18\n \x03(\x0b\x32\".spotify.metadata.proto.ExternalId\x12*\n\x04\x64isc\x18\x0b \x03(\x0b\x32\x1c.spotify.metadata.proto.Disc\x12\x0e\n\x06review\x18\x0c \x03(\t\x12\x34\n\tcopyright\x18\r \x03(\x0b\x32!.spotify.metadata.proto.Copyright\x12\x38\n\x0brestriction\x18\x0e \x03(\x0b\x32#.spotify.metadata.proto.Restriction\x12.\n\x07related\x18\x0f \x03(\x0b\x32\x1d.spotify.metadata.proto.Album\x12\x37\n\x0bsale_period\x18\x10 \x03(\x0b\x32\".spotify.metadata.proto.SalePeriod\x12\x37\n\x0b\x63over_group\x18\x11 \x01(\x0b\x32\".spotify.metadata.proto.ImageGroup\x12\x16\n\x0eoriginal_title\x18\x12 \x01(\t\x12\x15\n\rversion_title\x18\x13 \x01(\t\x12\x10\n\x08type_str\x18\x14 \x01(\t\x12:\n\x0c\x61vailability\x18\x17 \x03(\x0b\x32$.spotify.metadata.proto.Availability\"R\n\x04Type\x12\t\n\x05\x41LBUM\x10\x01\x12\n\n\x06SINGLE\x10\x02\x12\x0f\n\x0b\x43OMPILATION\x10\x03\x12\x06\n\x02\x45P\x10\x04\x12\r\n\tAUDIOBOOK\x10\x05\x12\x0b\n\x07PODCAST\x10\x06\"\xd5\x05\n\x05Track\x12\x0b\n\x03gid\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\t\x12,\n\x05\x61lbum\x18\x03 \x01(\x0b\x32\x1d.spotify.metadata.proto.Album\x12.\n\x06\x61rtist\x18\x04 \x03(\x0b\x32\x1e.spotify.metadata.proto.Artist\x12\x0e\n\x06number\x18\x05 \x01(\x11\x12\x13\n\x0b\x64isc_number\x18\x06 \x01(\x11\x12\x10\n\x08\x64uration\x18\x07 \x01(\x11\x12\x12\n\npopularity\x18\x08 \x01(\x11\x12\x10\n\x08\x65xplicit\x18\t \x01(\x08\x12\x37\n\x0b\x65xternal_id\x18\n \x03(\x0b\x32\".spotify.metadata.proto.ExternalId\x12\x38\n\x0brestriction\x18\x0b \x03(\x0b\x32#.spotify.metadata.proto.Restriction\x12/\n\x04\x66ile\x18\x0c \x03(\x0b\x32!.spotify.metadata.proto.AudioFile\x12\x32\n\x0b\x61lternative\x18\r \x03(\x0b\x32\x1d.spotify.metadata.proto.Track\x12\x37\n\x0bsale_period\x18\x0e \x03(\x0b\x32\".spotify.metadata.proto.SalePeriod\x12\x32\n\x07preview\x18\x0f \x03(\x0b\x32!.spotify.metadata.proto.AudioFile\x12\x0c\n\x04tags\x18\x10 \x03(\t\x12\x1f\n\x17\x65\x61rliest_live_timestamp\x18\x11 \x01(\x03\x12\x12\n\nhas_lyrics\x18\x12 \x01(\x08\x12:\n\x0c\x61vailability\x18\x13 \x03(\x0b\x32$.spotify.metadata.proto.Availability\x12\x32\n\x08licensor\x18\x15 \x01(\x0b\x32 .spotify.metadata.proto.Licensor\"\xbf\x05\n\x04Show\x12\x0b\n\x03gid\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18@ \x01(\t\x12!\n\x15\x64\x65precated_popularity\x18\x41 \x01(\x11\x42\x02\x18\x01\x12\x11\n\tpublisher\x18\x42 \x01(\t\x12\x10\n\x08language\x18\x43 \x01(\t\x12\x10\n\x08\x65xplicit\x18\x44 \x01(\x08\x12\x37\n\x0b\x63over_image\x18\x45 \x01(\x0b\x32\".spotify.metadata.proto.ImageGroup\x12\x30\n\x07\x65pisode\x18\x46 \x03(\x0b\x32\x1f.spotify.metadata.proto.Episode\x12\x34\n\tcopyright\x18G \x03(\x0b\x32!.spotify.metadata.proto.Copyright\x12\x38\n\x0brestriction\x18H \x03(\x0b\x32#.spotify.metadata.proto.Restriction\x12\x0f\n\x07keyword\x18I \x03(\t\x12:\n\nmedia_type\x18J \x01(\x0e\x32&.spotify.metadata.proto.Show.MediaType\x12H\n\x11\x63onsumption_order\x18K \x01(\x0e\x32-.spotify.metadata.proto.Show.ConsumptionOrder\x12:\n\x0c\x61vailability\x18N \x03(\x0b\x32$.spotify.metadata.proto.Availability\x12\x13\n\x0btrailer_uri\x18S \x01(\t\",\n\tMediaType\x12\t\n\x05MIXED\x10\x00\x12\t\n\x05\x41UDIO\x10\x01\x12\t\n\x05VIDEO\x10\x02\"<\n\x10\x43onsumptionOrder\x12\x0e\n\nSEQUENTIAL\x10\x01\x12\x0c\n\x08\x45PISODIC\x10\x02\x12\n\n\x06RECENT\x10\x03\"\xf9\x06\n\x07\x45pisode\x12\x0b\n\x03gid\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08\x64uration\x18\x07 \x01(\x11\x12\x30\n\x05\x61udio\x18\x0c \x03(\x0b\x32!.spotify.metadata.proto.AudioFile\x12\x13\n\x0b\x64\x65scription\x18@ \x01(\t\x12\x0e\n\x06number\x18\x41 \x01(\x11\x12\x32\n\x0cpublish_time\x18\x42 \x01(\x0b\x32\x1c.spotify.metadata.proto.Date\x12!\n\x15\x64\x65precated_popularity\x18\x43 \x01(\x11\x42\x02\x18\x01\x12\x37\n\x0b\x63over_image\x18\x44 \x01(\x0b\x32\".spotify.metadata.proto.ImageGroup\x12\x10\n\x08language\x18\x45 \x01(\t\x12\x10\n\x08\x65xplicit\x18\x46 \x01(\x08\x12*\n\x04show\x18G \x01(\x0b\x32\x1c.spotify.metadata.proto.Show\x12\x30\n\x05video\x18H \x03(\x0b\x32!.spotify.metadata.proto.VideoFile\x12\x38\n\rvideo_preview\x18I \x03(\x0b\x32!.spotify.metadata.proto.VideoFile\x12\x38\n\raudio_preview\x18J \x03(\x0b\x32!.spotify.metadata.proto.AudioFile\x12\x38\n\x0brestriction\x18K \x03(\x0b\x32#.spotify.metadata.proto.Restriction\x12\x38\n\x0c\x66reeze_frame\x18L \x01(\x0b\x32\".spotify.metadata.proto.ImageGroup\x12\x0f\n\x07keyword\x18M \x03(\t\x12!\n\x19\x61llow_background_playback\x18Q \x01(\x08\x12:\n\x0c\x61vailability\x18R \x03(\x0b\x32$.spotify.metadata.proto.Availability\x12\x14\n\x0c\x65xternal_url\x18S \x01(\t\x12\x39\n\x04type\x18W \x01(\x0e\x32+.spotify.metadata.proto.Episode.EpisodeType\"/\n\x0b\x45pisodeType\x12\x08\n\x04\x46ULL\x10\x00\x12\x0b\n\x07TRAILER\x10\x01\x12\t\n\x05\x42ONUS\x10\x02\"\x18\n\x08Licensor\x12\x0c\n\x04uuid\x18\x01 \x01(\x0c\"J\n\tTopTracks\x12\x0f\n\x07\x63ountry\x18\x01 \x01(\t\x12,\n\x05track\x18\x02 \x03(\x0b\x32\x1d.spotify.metadata.proto.Track\"F\n\x0e\x41\x63tivityPeriod\x12\x12\n\nstart_year\x18\x01 \x01(\x11\x12\x10\n\x08\x65nd_year\x18\x02 \x01(\x11\x12\x0e\n\x06\x64\x65\x63\x61\x64\x65\x18\x03 \x01(\x11\":\n\nAlbumGroup\x12,\n\x05\x61lbum\x18\x01 \x03(\x0b\x32\x1d.spotify.metadata.proto.Album\"N\n\x04\x44\x61te\x12\x0c\n\x04year\x18\x01 \x01(\x11\x12\r\n\x05month\x18\x02 \x01(\x11\x12\x0b\n\x03\x64\x61y\x18\x03 \x01(\x11\x12\x0c\n\x04hour\x18\x04 \x01(\x11\x12\x0e\n\x06minute\x18\x05 \x01(\x11\"\xa0\x01\n\x05Image\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\x0c\x12\x30\n\x04size\x18\x02 \x01(\x0e\x32\".spotify.metadata.proto.Image.Size\x12\r\n\x05width\x18\x03 \x01(\x11\x12\x0e\n\x06height\x18\x04 \x01(\x11\"5\n\x04Size\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\t\n\x05SMALL\x10\x01\x12\t\n\x05LARGE\x10\x02\x12\n\n\x06XLARGE\x10\x03\":\n\nImageGroup\x12,\n\x05image\x18\x01 \x03(\x0b\x32\x1d.spotify.metadata.proto.Image\"\x86\x01\n\tBiography\x12\x0c\n\x04text\x18\x01 \x01(\t\x12/\n\x08portrait\x18\x02 \x03(\x0b\x32\x1d.spotify.metadata.proto.Image\x12:\n\x0eportrait_group\x18\x03 \x03(\x0b\x32\".spotify.metadata.proto.ImageGroup\"R\n\x04\x44isc\x12\x0e\n\x06number\x18\x01 \x01(\x11\x12\x0c\n\x04name\x18\x02 \x01(\t\x12,\n\x05track\x18\x03 \x03(\x0b\x32\x1d.spotify.metadata.proto.Track\"e\n\tCopyright\x12\x34\n\x04type\x18\x01 \x01(\x0e\x32&.spotify.metadata.proto.Copyright.Type\x12\x0c\n\x04text\x18\x02 \x01(\t\"\x14\n\x04Type\x12\x05\n\x01P\x10\x00\x12\x05\n\x01\x43\x10\x01\"\xdf\x02\n\x0bRestriction\x12@\n\tcatalogue\x18\x01 \x03(\x0e\x32-.spotify.metadata.proto.Restriction.Catalogue\x12\x36\n\x04type\x18\x04 \x01(\x0e\x32(.spotify.metadata.proto.Restriction.Type\x12\x15\n\rcatalogue_str\x18\x05 \x03(\t\x12\x1b\n\x11\x63ountries_allowed\x18\x02 \x01(\tH\x00\x12\x1d\n\x13\x63ountries_forbidden\x18\x03 \x01(\tH\x00\"U\n\tCatalogue\x12\x06\n\x02\x41\x44\x10\x00\x12\x10\n\x0cSUBSCRIPTION\x10\x01\x12\x11\n\rCATALOGUE_ALL\x10\x02\x12\x0b\n\x07SHUFFLE\x10\x03\x12\x0e\n\nCOMMERCIAL\x10\x04\"\x15\n\x04Type\x12\r\n\tSTREAMING\x10\x00\x42\x15\n\x13\x63ountry_restriction\"R\n\x0c\x41vailability\x12\x15\n\rcatalogue_str\x18\x01 \x03(\t\x12+\n\x05start\x18\x02 \x01(\x0b\x32\x1c.spotify.metadata.proto.Date\"\x9e\x01\n\nSalePeriod\x12\x38\n\x0brestriction\x18\x01 \x03(\x0b\x32#.spotify.metadata.proto.Restriction\x12+\n\x05start\x18\x02 \x01(\x0b\x32\x1c.spotify.metadata.proto.Date\x12)\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x1c.spotify.metadata.proto.Date\"&\n\nExternalId\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\"\x89\x02\n\tAudioFile\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\x0c\x12\x38\n\x06\x66ormat\x18\x02 \x01(\x0e\x32(.spotify.metadata.proto.AudioFile.Format\"\xb0\x01\n\x06\x46ormat\x12\x11\n\rOGG_VORBIS_96\x10\x00\x12\x12\n\x0eOGG_VORBIS_160\x10\x01\x12\x12\n\x0eOGG_VORBIS_320\x10\x02\x12\x0b\n\x07MP3_256\x10\x03\x12\x0b\n\x07MP3_320\x10\x04\x12\x0b\n\x07MP3_160\x10\x05\x12\n\n\x06MP3_96\x10\x06\x12\x0f\n\x0bMP3_160_ENC\x10\x07\x12\n\n\x06\x41\x41\x43_24\x10\x08\x12\n\n\x06\x41\x41\x43_48\x10\t\x12\x0f\n\x0b\x41\x41\x43_24_NORM\x10\x10\"\x1c\n\tVideoFile\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\x0c\x42\"\n\x14\x63om.spotify.metadataB\x08MetadataH\x02' -) - -_ALBUM_TYPE = _descriptor.EnumDescriptor( - name='Type', - full_name='spotify.metadata.proto.Album.Type', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='ALBUM', - index=0, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SINGLE', - index=1, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='COMPILATION', - index=2, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='EP', - index=3, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AUDIOBOOK', - index=4, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='PODCAST', - index=5, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=1742, - serialized_end=1824, -) -_sym_db.RegisterEnumDescriptor(_ALBUM_TYPE) - -_SHOW_MEDIATYPE = _descriptor.EnumDescriptor( - name='MediaType', - full_name='spotify.metadata.proto.Show.MediaType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='MIXED', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AUDIO', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='VIDEO', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3152, - serialized_end=3196, -) -_sym_db.RegisterEnumDescriptor(_SHOW_MEDIATYPE) - -_SHOW_CONSUMPTIONORDER = _descriptor.EnumDescriptor( - name='ConsumptionOrder', - full_name='spotify.metadata.proto.Show.ConsumptionOrder', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='SEQUENTIAL', - index=0, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='EPISODIC', - index=1, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='RECENT', - index=2, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=3198, - serialized_end=3258, -) -_sym_db.RegisterEnumDescriptor(_SHOW_CONSUMPTIONORDER) - -_EPISODE_EPISODETYPE = _descriptor.EnumDescriptor( - name='EpisodeType', - full_name='spotify.metadata.proto.Episode.EpisodeType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='FULL', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='TRAILER', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='BONUS', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=4103, - serialized_end=4150, -) -_sym_db.RegisterEnumDescriptor(_EPISODE_EPISODETYPE) - -_IMAGE_SIZE = _descriptor.EnumDescriptor( - name='Size', - full_name='spotify.metadata.proto.Image.Size', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='DEFAULT', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SMALL', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='LARGE', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='XLARGE', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=4574, - serialized_end=4627, -) -_sym_db.RegisterEnumDescriptor(_IMAGE_SIZE) - -_COPYRIGHT_TYPE = _descriptor.EnumDescriptor( - name='Type', - full_name='spotify.metadata.proto.Copyright.Type', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='P', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=4991, - serialized_end=5011, -) -_sym_db.RegisterEnumDescriptor(_COPYRIGHT_TYPE) - -_RESTRICTION_CATALOGUE = _descriptor.EnumDescriptor( - name='Catalogue', - full_name='spotify.metadata.proto.Restriction.Catalogue', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='AD', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SUBSCRIPTION', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='CATALOGUE_ALL', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='SHUFFLE', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='COMMERCIAL', - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=5234, - serialized_end=5319, -) -_sym_db.RegisterEnumDescriptor(_RESTRICTION_CATALOGUE) - -_RESTRICTION_TYPE = _descriptor.EnumDescriptor( - name='Type', - full_name='spotify.metadata.proto.Restriction.Type', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='STREAMING', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=5321, - serialized_end=5342, -) -_sym_db.RegisterEnumDescriptor(_RESTRICTION_TYPE) - -_AUDIOFILE_FORMAT = _descriptor.EnumDescriptor( - name='Format', - full_name='spotify.metadata.proto.AudioFile.Format', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='OGG_VORBIS_96', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OGG_VORBIS_160', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='OGG_VORBIS_320', - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='MP3_256', - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='MP3_320', - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='MP3_160', - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='MP3_96', - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='MP3_160_ENC', - index=7, - number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AAC_24', - index=8, - number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AAC_48', - index=9, - number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='AAC_24_NORM', - index=10, - number=16, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=5742, - serialized_end=5918, -) -_sym_db.RegisterEnumDescriptor(_AUDIOFILE_FORMAT) - -_ARTIST = _descriptor.Descriptor( - name='Artist', - full_name='spotify.metadata.proto.Artist', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='gid', - full_name='spotify.metadata.proto.Artist.gid', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='name', - full_name='spotify.metadata.proto.Artist.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='popularity', - full_name='spotify.metadata.proto.Artist.popularity', - index=2, - number=3, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='top_track', - full_name='spotify.metadata.proto.Artist.top_track', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='album_group', - full_name='spotify.metadata.proto.Artist.album_group', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='single_group', - full_name='spotify.metadata.proto.Artist.single_group', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='compilation_group', - full_name='spotify.metadata.proto.Artist.compilation_group', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='appears_on_group', - full_name='spotify.metadata.proto.Artist.appears_on_group', - index=7, - number=8, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='genre', - full_name='spotify.metadata.proto.Artist.genre', - index=8, - number=9, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='external_id', - full_name='spotify.metadata.proto.Artist.external_id', - index=9, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='portrait', - full_name='spotify.metadata.proto.Artist.portrait', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='biography', - full_name='spotify.metadata.proto.Artist.biography', - index=11, - number=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='activity_period', - full_name='spotify.metadata.proto.Artist.activity_period', - index=12, - number=13, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='restriction', - full_name='spotify.metadata.proto.Artist.restriction', - index=13, - number=14, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='related', - full_name='spotify.metadata.proto.Artist.related', - index=14, - number=15, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_portrait_album_cover', - full_name='spotify.metadata.proto.Artist.is_portrait_album_cover', - index=15, - number=16, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='portrait_group', - full_name='spotify.metadata.proto.Artist.portrait_group', - index=16, - number=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sale_period', - full_name='spotify.metadata.proto.Artist.sale_period', - index=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='availability', - full_name='spotify.metadata.proto.Artist.availability', - index=18, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=43, - serialized_end=949, -) - -_ALBUM = _descriptor.Descriptor( - name='Album', - full_name='spotify.metadata.proto.Album', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='gid', - full_name='spotify.metadata.proto.Album.gid', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='name', - full_name='spotify.metadata.proto.Album.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='artist', - full_name='spotify.metadata.proto.Album.artist', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', - full_name='spotify.metadata.proto.Album.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='label', - full_name='spotify.metadata.proto.Album.label', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='date', - full_name='spotify.metadata.proto.Album.date', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='popularity', - full_name='spotify.metadata.proto.Album.popularity', - index=6, - number=7, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='genre', - full_name='spotify.metadata.proto.Album.genre', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cover', - full_name='spotify.metadata.proto.Album.cover', - index=8, - number=9, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='external_id', - full_name='spotify.metadata.proto.Album.external_id', - index=9, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disc', - full_name='spotify.metadata.proto.Album.disc', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='review', - full_name='spotify.metadata.proto.Album.review', - index=11, - number=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='copyright', - full_name='spotify.metadata.proto.Album.copyright', - index=12, - number=13, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='restriction', - full_name='spotify.metadata.proto.Album.restriction', - index=13, - number=14, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='related', - full_name='spotify.metadata.proto.Album.related', - index=14, - number=15, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sale_period', - full_name='spotify.metadata.proto.Album.sale_period', - index=15, - number=16, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cover_group', - full_name='spotify.metadata.proto.Album.cover_group', - index=16, - number=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='original_title', - full_name='spotify.metadata.proto.Album.original_title', - index=17, - number=18, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version_title', - full_name='spotify.metadata.proto.Album.version_title', - index=18, - number=19, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type_str', - full_name='spotify.metadata.proto.Album.type_str', - index=19, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='availability', - full_name='spotify.metadata.proto.Album.availability', - index=20, - number=23, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[ - _ALBUM_TYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=952, - serialized_end=1824, -) - -_TRACK = _descriptor.Descriptor( - name='Track', - full_name='spotify.metadata.proto.Track', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='gid', - full_name='spotify.metadata.proto.Track.gid', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='name', - full_name='spotify.metadata.proto.Track.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='album', - full_name='spotify.metadata.proto.Track.album', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='artist', - full_name='spotify.metadata.proto.Track.artist', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number', - full_name='spotify.metadata.proto.Track.number', - index=4, - number=5, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disc_number', - full_name='spotify.metadata.proto.Track.disc_number', - index=5, - number=6, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='duration', - full_name='spotify.metadata.proto.Track.duration', - index=6, - number=7, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='popularity', - full_name='spotify.metadata.proto.Track.popularity', - index=7, - number=8, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='explicit', - full_name='spotify.metadata.proto.Track.explicit', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='external_id', - full_name='spotify.metadata.proto.Track.external_id', - index=9, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='restriction', - full_name='spotify.metadata.proto.Track.restriction', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file', - full_name='spotify.metadata.proto.Track.file', - index=11, - number=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='alternative', - full_name='spotify.metadata.proto.Track.alternative', - index=12, - number=13, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sale_period', - full_name='spotify.metadata.proto.Track.sale_period', - index=13, - number=14, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='preview', - full_name='spotify.metadata.proto.Track.preview', - index=14, - number=15, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='tags', - full_name='spotify.metadata.proto.Track.tags', - index=15, - number=16, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='earliest_live_timestamp', - full_name='spotify.metadata.proto.Track.earliest_live_timestamp', - index=16, - number=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='has_lyrics', - full_name='spotify.metadata.proto.Track.has_lyrics', - index=17, - number=18, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='availability', - full_name='spotify.metadata.proto.Track.availability', - index=18, - number=19, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='licensor', - full_name='spotify.metadata.proto.Track.licensor', - index=19, - number=21, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=1827, - serialized_end=2552, -) - -_SHOW = _descriptor.Descriptor( - name='Show', - full_name='spotify.metadata.proto.Show', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='gid', - full_name='spotify.metadata.proto.Show.gid', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='name', - full_name='spotify.metadata.proto.Show.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='description', - full_name='spotify.metadata.proto.Show.description', - index=2, - number=64, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='deprecated_popularity', - full_name='spotify.metadata.proto.Show.deprecated_popularity', - index=3, - number=65, - type=17, - 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, - serialized_options=b'\030\001', - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='publisher', - full_name='spotify.metadata.proto.Show.publisher', - index=4, - number=66, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='language', - full_name='spotify.metadata.proto.Show.language', - index=5, - number=67, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='explicit', - full_name='spotify.metadata.proto.Show.explicit', - index=6, - number=68, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cover_image', - full_name='spotify.metadata.proto.Show.cover_image', - index=7, - number=69, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='episode', - full_name='spotify.metadata.proto.Show.episode', - index=8, - number=70, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='copyright', - full_name='spotify.metadata.proto.Show.copyright', - index=9, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='restriction', - full_name='spotify.metadata.proto.Show.restriction', - index=10, - number=72, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='keyword', - full_name='spotify.metadata.proto.Show.keyword', - index=11, - number=73, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='media_type', - full_name='spotify.metadata.proto.Show.media_type', - index=12, - number=74, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='consumption_order', - full_name='spotify.metadata.proto.Show.consumption_order', - index=13, - number=75, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='availability', - full_name='spotify.metadata.proto.Show.availability', - index=14, - number=78, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='trailer_uri', - full_name='spotify.metadata.proto.Show.trailer_uri', - index=15, - number=83, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[ - _SHOW_MEDIATYPE, - _SHOW_CONSUMPTIONORDER, - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=2555, - serialized_end=3258, -) - -_EPISODE = _descriptor.Descriptor( - name='Episode', - full_name='spotify.metadata.proto.Episode', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='gid', - full_name='spotify.metadata.proto.Episode.gid', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='name', - full_name='spotify.metadata.proto.Episode.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='duration', - full_name='spotify.metadata.proto.Episode.duration', - index=2, - number=7, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='audio', - full_name='spotify.metadata.proto.Episode.audio', - index=3, - number=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='description', - full_name='spotify.metadata.proto.Episode.description', - index=4, - number=64, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number', - full_name='spotify.metadata.proto.Episode.number', - index=5, - number=65, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='publish_time', - full_name='spotify.metadata.proto.Episode.publish_time', - index=6, - number=66, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='deprecated_popularity', - full_name='spotify.metadata.proto.Episode.deprecated_popularity', - index=7, - number=67, - type=17, - 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, - serialized_options=b'\030\001', - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cover_image', - full_name='spotify.metadata.proto.Episode.cover_image', - index=8, - number=68, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='language', - full_name='spotify.metadata.proto.Episode.language', - index=9, - number=69, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='explicit', - full_name='spotify.metadata.proto.Episode.explicit', - index=10, - number=70, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='show', - full_name='spotify.metadata.proto.Episode.show', - index=11, - number=71, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='video', - full_name='spotify.metadata.proto.Episode.video', - index=12, - number=72, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='video_preview', - full_name='spotify.metadata.proto.Episode.video_preview', - index=13, - number=73, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='audio_preview', - full_name='spotify.metadata.proto.Episode.audio_preview', - index=14, - number=74, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='restriction', - full_name='spotify.metadata.proto.Episode.restriction', - index=15, - number=75, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='freeze_frame', - full_name='spotify.metadata.proto.Episode.freeze_frame', - index=16, - number=76, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='keyword', - full_name='spotify.metadata.proto.Episode.keyword', - index=17, - number=77, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='allow_background_playback', - full_name= - 'spotify.metadata.proto.Episode.allow_background_playback', - index=18, - number=81, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='availability', - full_name='spotify.metadata.proto.Episode.availability', - index=19, - number=82, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='external_url', - full_name='spotify.metadata.proto.Episode.external_url', - index=20, - number=83, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', - full_name='spotify.metadata.proto.Episode.type', - index=21, - number=87, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[ - _EPISODE_EPISODETYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=3261, - serialized_end=4150, -) - -_LICENSOR = _descriptor.Descriptor( - name='Licensor', - full_name='spotify.metadata.proto.Licensor', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uuid', - full_name='spotify.metadata.proto.Licensor.uuid', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=4152, - serialized_end=4176, -) - -_TOPTRACKS = _descriptor.Descriptor( - name='TopTracks', - full_name='spotify.metadata.proto.TopTracks', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='country', - full_name='spotify.metadata.proto.TopTracks.country', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='track', - full_name='spotify.metadata.proto.TopTracks.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=4178, - serialized_end=4252, -) - -_ACTIVITYPERIOD = _descriptor.Descriptor( - name='ActivityPeriod', - full_name='spotify.metadata.proto.ActivityPeriod', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='start_year', - full_name='spotify.metadata.proto.ActivityPeriod.start_year', - index=0, - number=1, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='end_year', - full_name='spotify.metadata.proto.ActivityPeriod.end_year', - index=1, - number=2, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='decade', - full_name='spotify.metadata.proto.ActivityPeriod.decade', - index=2, - number=3, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=4254, - serialized_end=4324, -) - -_ALBUMGROUP = _descriptor.Descriptor( - name='AlbumGroup', - full_name='spotify.metadata.proto.AlbumGroup', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='album', - full_name='spotify.metadata.proto.AlbumGroup.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=4326, - serialized_end=4384, -) - -_DATE = _descriptor.Descriptor( - name='Date', - full_name='spotify.metadata.proto.Date', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='year', - full_name='spotify.metadata.proto.Date.year', - index=0, - number=1, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='month', - full_name='spotify.metadata.proto.Date.month', - index=1, - number=2, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='day', - full_name='spotify.metadata.proto.Date.day', - index=2, - number=3, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='hour', - full_name='spotify.metadata.proto.Date.hour', - index=3, - number=4, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='minute', - full_name='spotify.metadata.proto.Date.minute', - index=4, - number=5, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=4386, - serialized_end=4464, -) - -_IMAGE = _descriptor.Descriptor( - name='Image', - full_name='spotify.metadata.proto.Image', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='file_id', - full_name='spotify.metadata.proto.Image.file_id', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='size', - full_name='spotify.metadata.proto.Image.size', - index=1, - number=2, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='width', - full_name='spotify.metadata.proto.Image.width', - index=2, - number=3, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='height', - full_name='spotify.metadata.proto.Image.height', - index=3, - number=4, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[ - _IMAGE_SIZE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=4467, - serialized_end=4627, -) - -_IMAGEGROUP = _descriptor.Descriptor( - name='ImageGroup', - full_name='spotify.metadata.proto.ImageGroup', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='image', - full_name='spotify.metadata.proto.ImageGroup.image', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=4629, - serialized_end=4687, -) - -_BIOGRAPHY = _descriptor.Descriptor( - name='Biography', - full_name='spotify.metadata.proto.Biography', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='text', - full_name='spotify.metadata.proto.Biography.text', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='portrait', - full_name='spotify.metadata.proto.Biography.portrait', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='portrait_group', - full_name='spotify.metadata.proto.Biography.portrait_group', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=4690, - serialized_end=4824, -) - -_DISC = _descriptor.Descriptor( - name='Disc', - full_name='spotify.metadata.proto.Disc', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='number', - full_name='spotify.metadata.proto.Disc.number', - index=0, - number=1, - type=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='name', - full_name='spotify.metadata.proto.Disc.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='track', - full_name='spotify.metadata.proto.Disc.track', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=4826, - serialized_end=4908, -) - -_COPYRIGHT = _descriptor.Descriptor( - name='Copyright', - full_name='spotify.metadata.proto.Copyright', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='type', - full_name='spotify.metadata.proto.Copyright.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='text', - full_name='spotify.metadata.proto.Copyright.text', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[ - _COPYRIGHT_TYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=4910, - serialized_end=5011, -) - -_RESTRICTION = _descriptor.Descriptor( - name='Restriction', - full_name='spotify.metadata.proto.Restriction', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='catalogue', - full_name='spotify.metadata.proto.Restriction.catalogue', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', - full_name='spotify.metadata.proto.Restriction.type', - index=1, - number=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='catalogue_str', - full_name='spotify.metadata.proto.Restriction.catalogue_str', - index=2, - number=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='countries_allowed', - full_name='spotify.metadata.proto.Restriction.countries_allowed', - index=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='countries_forbidden', - full_name='spotify.metadata.proto.Restriction.countries_forbidden', - index=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[ - _RESTRICTION_CATALOGUE, - _RESTRICTION_TYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='country_restriction', - full_name='spotify.metadata.proto.Restriction.country_restriction', - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - ], - serialized_start=5014, - serialized_end=5365, -) - -_AVAILABILITY = _descriptor.Descriptor( - name='Availability', - full_name='spotify.metadata.proto.Availability', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='catalogue_str', - full_name='spotify.metadata.proto.Availability.catalogue_str', - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='start', - full_name='spotify.metadata.proto.Availability.start', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=5367, - serialized_end=5449, -) - -_SALEPERIOD = _descriptor.Descriptor( - name='SalePeriod', - full_name='spotify.metadata.proto.SalePeriod', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='restriction', - full_name='spotify.metadata.proto.SalePeriod.restriction', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='start', - full_name='spotify.metadata.proto.SalePeriod.start', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='end', - full_name='spotify.metadata.proto.SalePeriod.end', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=5452, - serialized_end=5610, -) - -_EXTERNALID = _descriptor.Descriptor( - name='ExternalId', - full_name='spotify.metadata.proto.ExternalId', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='type', - full_name='spotify.metadata.proto.ExternalId.type', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='id', - full_name='spotify.metadata.proto.ExternalId.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=5612, - serialized_end=5650, -) - -_AUDIOFILE = _descriptor.Descriptor( - name='AudioFile', - full_name='spotify.metadata.proto.AudioFile', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='file_id', - full_name='spotify.metadata.proto.AudioFile.file_id', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='format', - full_name='spotify.metadata.proto.AudioFile.format', - index=1, - number=2, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[ - _AUDIOFILE_FORMAT, - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=5653, - serialized_end=5918, -) - -_VIDEOFILE = _descriptor.Descriptor( - name='VideoFile', - full_name='spotify.metadata.proto.VideoFile', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='file_id', - full_name='spotify.metadata.proto.VideoFile.file_id', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=5920, - serialized_end=5948, -) - -_ARTIST.fields_by_name['top_track'].message_type = _TOPTRACKS -_ARTIST.fields_by_name['album_group'].message_type = _ALBUMGROUP -_ARTIST.fields_by_name['single_group'].message_type = _ALBUMGROUP -_ARTIST.fields_by_name['compilation_group'].message_type = _ALBUMGROUP -_ARTIST.fields_by_name['appears_on_group'].message_type = _ALBUMGROUP -_ARTIST.fields_by_name['external_id'].message_type = _EXTERNALID -_ARTIST.fields_by_name['portrait'].message_type = _IMAGE -_ARTIST.fields_by_name['biography'].message_type = _BIOGRAPHY -_ARTIST.fields_by_name['activity_period'].message_type = _ACTIVITYPERIOD -_ARTIST.fields_by_name['restriction'].message_type = _RESTRICTION -_ARTIST.fields_by_name['related'].message_type = _ARTIST -_ARTIST.fields_by_name['portrait_group'].message_type = _IMAGEGROUP -_ARTIST.fields_by_name['sale_period'].message_type = _SALEPERIOD -_ARTIST.fields_by_name['availability'].message_type = _AVAILABILITY -_ALBUM.fields_by_name['artist'].message_type = _ARTIST -_ALBUM.fields_by_name['type'].enum_type = _ALBUM_TYPE -_ALBUM.fields_by_name['date'].message_type = _DATE -_ALBUM.fields_by_name['cover'].message_type = _IMAGE -_ALBUM.fields_by_name['external_id'].message_type = _EXTERNALID -_ALBUM.fields_by_name['disc'].message_type = _DISC -_ALBUM.fields_by_name['copyright'].message_type = _COPYRIGHT -_ALBUM.fields_by_name['restriction'].message_type = _RESTRICTION -_ALBUM.fields_by_name['related'].message_type = _ALBUM -_ALBUM.fields_by_name['sale_period'].message_type = _SALEPERIOD -_ALBUM.fields_by_name['cover_group'].message_type = _IMAGEGROUP -_ALBUM.fields_by_name['availability'].message_type = _AVAILABILITY -_ALBUM_TYPE.containing_type = _ALBUM -_TRACK.fields_by_name['album'].message_type = _ALBUM -_TRACK.fields_by_name['artist'].message_type = _ARTIST -_TRACK.fields_by_name['external_id'].message_type = _EXTERNALID -_TRACK.fields_by_name['restriction'].message_type = _RESTRICTION -_TRACK.fields_by_name['file'].message_type = _AUDIOFILE -_TRACK.fields_by_name['alternative'].message_type = _TRACK -_TRACK.fields_by_name['sale_period'].message_type = _SALEPERIOD -_TRACK.fields_by_name['preview'].message_type = _AUDIOFILE -_TRACK.fields_by_name['availability'].message_type = _AVAILABILITY -_TRACK.fields_by_name['licensor'].message_type = _LICENSOR -_SHOW.fields_by_name['cover_image'].message_type = _IMAGEGROUP -_SHOW.fields_by_name['episode'].message_type = _EPISODE -_SHOW.fields_by_name['copyright'].message_type = _COPYRIGHT -_SHOW.fields_by_name['restriction'].message_type = _RESTRICTION -_SHOW.fields_by_name['media_type'].enum_type = _SHOW_MEDIATYPE -_SHOW.fields_by_name['consumption_order'].enum_type = _SHOW_CONSUMPTIONORDER -_SHOW.fields_by_name['availability'].message_type = _AVAILABILITY -_SHOW_MEDIATYPE.containing_type = _SHOW -_SHOW_CONSUMPTIONORDER.containing_type = _SHOW -_EPISODE.fields_by_name['audio'].message_type = _AUDIOFILE -_EPISODE.fields_by_name['publish_time'].message_type = _DATE -_EPISODE.fields_by_name['cover_image'].message_type = _IMAGEGROUP -_EPISODE.fields_by_name['show'].message_type = _SHOW -_EPISODE.fields_by_name['video'].message_type = _VIDEOFILE -_EPISODE.fields_by_name['video_preview'].message_type = _VIDEOFILE -_EPISODE.fields_by_name['audio_preview'].message_type = _AUDIOFILE -_EPISODE.fields_by_name['restriction'].message_type = _RESTRICTION -_EPISODE.fields_by_name['freeze_frame'].message_type = _IMAGEGROUP -_EPISODE.fields_by_name['availability'].message_type = _AVAILABILITY -_EPISODE.fields_by_name['type'].enum_type = _EPISODE_EPISODETYPE -_EPISODE_EPISODETYPE.containing_type = _EPISODE -_TOPTRACKS.fields_by_name['track'].message_type = _TRACK -_ALBUMGROUP.fields_by_name['album'].message_type = _ALBUM -_IMAGE.fields_by_name['size'].enum_type = _IMAGE_SIZE -_IMAGE_SIZE.containing_type = _IMAGE -_IMAGEGROUP.fields_by_name['image'].message_type = _IMAGE -_BIOGRAPHY.fields_by_name['portrait'].message_type = _IMAGE -_BIOGRAPHY.fields_by_name['portrait_group'].message_type = _IMAGEGROUP -_DISC.fields_by_name['track'].message_type = _TRACK -_COPYRIGHT.fields_by_name['type'].enum_type = _COPYRIGHT_TYPE -_COPYRIGHT_TYPE.containing_type = _COPYRIGHT -_RESTRICTION.fields_by_name['catalogue'].enum_type = _RESTRICTION_CATALOGUE -_RESTRICTION.fields_by_name['type'].enum_type = _RESTRICTION_TYPE -_RESTRICTION_CATALOGUE.containing_type = _RESTRICTION -_RESTRICTION_TYPE.containing_type = _RESTRICTION -_RESTRICTION.oneofs_by_name['country_restriction'].fields.append( - _RESTRICTION.fields_by_name['countries_allowed']) -_RESTRICTION.fields_by_name[ - 'countries_allowed'].containing_oneof = _RESTRICTION.oneofs_by_name[ - 'country_restriction'] -_RESTRICTION.oneofs_by_name['country_restriction'].fields.append( - _RESTRICTION.fields_by_name['countries_forbidden']) -_RESTRICTION.fields_by_name[ - 'countries_forbidden'].containing_oneof = _RESTRICTION.oneofs_by_name[ - 'country_restriction'] -_AVAILABILITY.fields_by_name['start'].message_type = _DATE -_SALEPERIOD.fields_by_name['restriction'].message_type = _RESTRICTION -_SALEPERIOD.fields_by_name['start'].message_type = _DATE -_SALEPERIOD.fields_by_name['end'].message_type = _DATE -_AUDIOFILE.fields_by_name['format'].enum_type = _AUDIOFILE_FORMAT -_AUDIOFILE_FORMAT.containing_type = _AUDIOFILE -DESCRIPTOR.message_types_by_name['Artist'] = _ARTIST -DESCRIPTOR.message_types_by_name['Album'] = _ALBUM -DESCRIPTOR.message_types_by_name['Track'] = _TRACK -DESCRIPTOR.message_types_by_name['Show'] = _SHOW -DESCRIPTOR.message_types_by_name['Episode'] = _EPISODE -DESCRIPTOR.message_types_by_name['Licensor'] = _LICENSOR -DESCRIPTOR.message_types_by_name['TopTracks'] = _TOPTRACKS -DESCRIPTOR.message_types_by_name['ActivityPeriod'] = _ACTIVITYPERIOD -DESCRIPTOR.message_types_by_name['AlbumGroup'] = _ALBUMGROUP -DESCRIPTOR.message_types_by_name['Date'] = _DATE -DESCRIPTOR.message_types_by_name['Image'] = _IMAGE -DESCRIPTOR.message_types_by_name['ImageGroup'] = _IMAGEGROUP -DESCRIPTOR.message_types_by_name['Biography'] = _BIOGRAPHY -DESCRIPTOR.message_types_by_name['Disc'] = _DISC -DESCRIPTOR.message_types_by_name['Copyright'] = _COPYRIGHT -DESCRIPTOR.message_types_by_name['Restriction'] = _RESTRICTION -DESCRIPTOR.message_types_by_name['Availability'] = _AVAILABILITY -DESCRIPTOR.message_types_by_name['SalePeriod'] = _SALEPERIOD -DESCRIPTOR.message_types_by_name['ExternalId'] = _EXTERNALID -DESCRIPTOR.message_types_by_name['AudioFile'] = _AUDIOFILE -DESCRIPTOR.message_types_by_name['VideoFile'] = _VIDEOFILE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Artist = _reflection.GeneratedProtocolMessageType( - 'Artist', - (_message.Message, ), - { - 'DESCRIPTOR': _ARTIST, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Artist) - }) -_sym_db.RegisterMessage(Artist) - -Album = _reflection.GeneratedProtocolMessageType( - 'Album', - (_message.Message, ), - { - 'DESCRIPTOR': _ALBUM, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Album) - }) -_sym_db.RegisterMessage(Album) - -Track = _reflection.GeneratedProtocolMessageType( - 'Track', - (_message.Message, ), - { - 'DESCRIPTOR': _TRACK, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Track) - }) -_sym_db.RegisterMessage(Track) - -Show = _reflection.GeneratedProtocolMessageType( - 'Show', - (_message.Message, ), - { - 'DESCRIPTOR': _SHOW, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Show) - }) -_sym_db.RegisterMessage(Show) - -Episode = _reflection.GeneratedProtocolMessageType( - 'Episode', - (_message.Message, ), - { - 'DESCRIPTOR': _EPISODE, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Episode) - }) -_sym_db.RegisterMessage(Episode) - -Licensor = _reflection.GeneratedProtocolMessageType( - 'Licensor', - (_message.Message, ), - { - 'DESCRIPTOR': _LICENSOR, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Licensor) - }) -_sym_db.RegisterMessage(Licensor) - -TopTracks = _reflection.GeneratedProtocolMessageType( - 'TopTracks', - (_message.Message, ), - { - 'DESCRIPTOR': _TOPTRACKS, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.TopTracks) - }) -_sym_db.RegisterMessage(TopTracks) - -ActivityPeriod = _reflection.GeneratedProtocolMessageType( - 'ActivityPeriod', - (_message.Message, ), - { - 'DESCRIPTOR': _ACTIVITYPERIOD, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.ActivityPeriod) - }) -_sym_db.RegisterMessage(ActivityPeriod) - -AlbumGroup = _reflection.GeneratedProtocolMessageType( - 'AlbumGroup', - (_message.Message, ), - { - 'DESCRIPTOR': _ALBUMGROUP, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.AlbumGroup) - }) -_sym_db.RegisterMessage(AlbumGroup) - -Date = _reflection.GeneratedProtocolMessageType( - 'Date', - (_message.Message, ), - { - 'DESCRIPTOR': _DATE, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Date) - }) -_sym_db.RegisterMessage(Date) - -Image = _reflection.GeneratedProtocolMessageType( - 'Image', - (_message.Message, ), - { - 'DESCRIPTOR': _IMAGE, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Image) - }) -_sym_db.RegisterMessage(Image) - -ImageGroup = _reflection.GeneratedProtocolMessageType( - 'ImageGroup', - (_message.Message, ), - { - 'DESCRIPTOR': _IMAGEGROUP, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.ImageGroup) - }) -_sym_db.RegisterMessage(ImageGroup) - -Biography = _reflection.GeneratedProtocolMessageType( - 'Biography', - (_message.Message, ), - { - 'DESCRIPTOR': _BIOGRAPHY, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Biography) - }) -_sym_db.RegisterMessage(Biography) - -Disc = _reflection.GeneratedProtocolMessageType( - 'Disc', - (_message.Message, ), - { - 'DESCRIPTOR': _DISC, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Disc) - }) -_sym_db.RegisterMessage(Disc) - -Copyright = _reflection.GeneratedProtocolMessageType( - 'Copyright', - (_message.Message, ), - { - 'DESCRIPTOR': _COPYRIGHT, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Copyright) - }) -_sym_db.RegisterMessage(Copyright) - -Restriction = _reflection.GeneratedProtocolMessageType( - 'Restriction', - (_message.Message, ), - { - 'DESCRIPTOR': _RESTRICTION, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Restriction) - }) -_sym_db.RegisterMessage(Restriction) - -Availability = _reflection.GeneratedProtocolMessageType( - 'Availability', - (_message.Message, ), - { - 'DESCRIPTOR': _AVAILABILITY, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.Availability) - }) -_sym_db.RegisterMessage(Availability) - -SalePeriod = _reflection.GeneratedProtocolMessageType( - 'SalePeriod', - (_message.Message, ), - { - 'DESCRIPTOR': _SALEPERIOD, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.SalePeriod) - }) -_sym_db.RegisterMessage(SalePeriod) - -ExternalId = _reflection.GeneratedProtocolMessageType( - 'ExternalId', - (_message.Message, ), - { - 'DESCRIPTOR': _EXTERNALID, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.ExternalId) - }) -_sym_db.RegisterMessage(ExternalId) - -AudioFile = _reflection.GeneratedProtocolMessageType( - 'AudioFile', - (_message.Message, ), - { - 'DESCRIPTOR': _AUDIOFILE, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.AudioFile) - }) -_sym_db.RegisterMessage(AudioFile) - -VideoFile = _reflection.GeneratedProtocolMessageType( - 'VideoFile', - (_message.Message, ), - { - 'DESCRIPTOR': _VIDEOFILE, - '__module__': 'metadata_pb2' - # @@protoc_insertion_point(class_scope:spotify.metadata.proto.VideoFile) - }) -_sym_db.RegisterMessage(VideoFile) - -DESCRIPTOR._options = None -_SHOW.fields_by_name['deprecated_popularity']._options = None -_EPISODE.fields_by_name['deprecated_popularity']._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/PlayOrigin_pb2.py b/librespot/proto/PlayOrigin_pb2.py deleted file mode 100644 index 64b3efe..0000000 --- a/librespot/proto/PlayOrigin_pb2.py +++ /dev/null @@ -1,193 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: play_origin.proto -"""Generated protocol buffer code.""" -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="play_origin.proto", - package="spotify.player.proto", - syntax="proto2", - serialized_options=b"\n\023com.spotify.contextH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x11play_origin.proto\x12\x14spotify.player.proto"\xbf\x01\n\nPlayOrigin\x12\x1a\n\x12\x66\x65\x61ture_identifier\x18\x01 \x01(\t\x12\x17\n\x0f\x66\x65\x61ture_version\x18\x02 \x01(\t\x12\x10\n\x08view_uri\x18\x03 \x01(\t\x12\x19\n\x11\x65xternal_referrer\x18\x04 \x01(\t\x12\x1b\n\x13referrer_identifier\x18\x05 \x01(\t\x12\x19\n\x11\x64\x65vice_identifier\x18\x06 \x01(\t\x12\x17\n\x0f\x66\x65\x61ture_classes\x18\x07 \x03(\tB\x17\n\x13\x63om.spotify.contextH\x02', -) - -_PLAYORIGIN = _descriptor.Descriptor( - name="PlayOrigin", - full_name="spotify.player.proto.PlayOrigin", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="feature_identifier", - full_name="spotify.player.proto.PlayOrigin.feature_identifier", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="feature_version", - full_name="spotify.player.proto.PlayOrigin.feature_version", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="view_uri", - full_name="spotify.player.proto.PlayOrigin.view_uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="external_referrer", - full_name="spotify.player.proto.PlayOrigin.external_referrer", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="referrer_identifier", - full_name="spotify.player.proto.PlayOrigin.referrer_identifier", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="device_identifier", - full_name="spotify.player.proto.PlayOrigin.device_identifier", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="feature_classes", - full_name="spotify.player.proto.PlayOrigin.feature_classes", - index=6, - number=7, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=44, - serialized_end=235, -) - -DESCRIPTOR.message_types_by_name["PlayOrigin"] = _PLAYORIGIN -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -PlayOrigin = _reflection.GeneratedProtocolMessageType( - "PlayOrigin", - (_message.Message, ), - { - "DESCRIPTOR": _PLAYORIGIN, - "__module__": "play_origin_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.PlayOrigin) - }, -) -_sym_db.RegisterMessage(PlayOrigin) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Playback_pb2.py b/librespot/proto/Playback_pb2.py deleted file mode 100644 index 881cfeb..0000000 --- a/librespot/proto/Playback_pb2.py +++ /dev/null @@ -1,162 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: playback.proto -"""Generated protocol buffer code.""" -import ContextTrack_pb2 as context__track__pb2 -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="playback.proto", - package="spotify.player.proto.transfer", - syntax="proto2", - serialized_options=b"\n\024com.spotify.transferH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x0eplayback.proto\x12\x1dspotify.player.proto.transfer\x1a\x13\x63ontext_track.proto"\xa5\x01\n\x08Playback\x12\x11\n\ttimestamp\x18\x01 \x01(\x03\x12 \n\x18position_as_of_timestamp\x18\x02 \x01(\x05\x12\x16\n\x0eplayback_speed\x18\x03 \x01(\x01\x12\x11\n\tis_paused\x18\x04 \x01(\x08\x12\x39\n\rcurrent_track\x18\x05 \x01(\x0b\x32".spotify.player.proto.ContextTrackB\x18\n\x14\x63om.spotify.transferH\x02', - dependencies=[ - context__track__pb2.DESCRIPTOR, - ], -) - -_PLAYBACK = _descriptor.Descriptor( - name="Playback", - full_name="spotify.player.proto.transfer.Playback", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="timestamp", - full_name="spotify.player.proto.transfer.Playback.timestamp", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="position_as_of_timestamp", - full_name= - "spotify.player.proto.transfer.Playback.position_as_of_timestamp", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="playback_speed", - full_name="spotify.player.proto.transfer.Playback.playback_speed", - index=2, - number=3, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="is_paused", - full_name="spotify.player.proto.transfer.Playback.is_paused", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="current_track", - full_name="spotify.player.proto.transfer.Playback.current_track", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=71, - serialized_end=236, -) - -_PLAYBACK.fields_by_name[ - "current_track"].message_type = context__track__pb2._CONTEXTTRACK -DESCRIPTOR.message_types_by_name["Playback"] = _PLAYBACK -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Playback = _reflection.GeneratedProtocolMessageType( - "Playback", - (_message.Message, ), - { - "DESCRIPTOR": _PLAYBACK, - "__module__": "playback_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.transfer.Playback) - }, -) -_sym_db.RegisterMessage(Playback) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Player_pb2.py b/librespot/proto/Player_pb2.py deleted file mode 100644 index cd267de..0000000 --- a/librespot/proto/Player_pb2.py +++ /dev/null @@ -1,1851 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: player.proto -"""Generated protocol buffer code.""" -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 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name='player.proto', - package='connectstate', - syntax='proto3', - serialized_options=b'\n\030com.spotify.connectstateH\002', - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x0cplayer.proto\x12\x0c\x63onnectstate\"\xea\x08\n\x0bPlayerState\x12\x11\n\ttimestamp\x18\x01 \x01(\x03\x12\x13\n\x0b\x63ontext_uri\x18\x02 \x01(\t\x12\x13\n\x0b\x63ontext_url\x18\x03 \x01(\t\x12\x38\n\x14\x63ontext_restrictions\x18\x04 \x01(\x0b\x32\x1a.connectstate.Restrictions\x12-\n\x0bplay_origin\x18\x05 \x01(\x0b\x32\x18.connectstate.PlayOrigin\x12)\n\x05index\x18\x06 \x01(\x0b\x32\x1a.connectstate.ContextIndex\x12*\n\x05track\x18\x07 \x01(\x0b\x32\x1b.connectstate.ProvidedTrack\x12\x13\n\x0bplayback_id\x18\x08 \x01(\t\x12\x16\n\x0eplayback_speed\x18\t \x01(\x01\x12 \n\x18position_as_of_timestamp\x18\n \x01(\x03\x12\x10\n\x08\x64uration\x18\x0b \x01(\x03\x12\x12\n\nis_playing\x18\x0c \x01(\x08\x12\x11\n\tis_paused\x18\r \x01(\x08\x12\x14\n\x0cis_buffering\x18\x0e \x01(\x08\x12\x1b\n\x13is_system_initiated\x18\x0f \x01(\x08\x12\x33\n\x07options\x18\x10 \x01(\x0b\x32\".connectstate.ContextPlayerOptions\x12\x30\n\x0crestrictions\x18\x11 \x01(\x0b\x32\x1a.connectstate.Restrictions\x12\x30\n\x0csuppressions\x18\x12 \x01(\x0b\x32\x1a.connectstate.Suppressions\x12\x30\n\x0bprev_tracks\x18\x13 \x03(\x0b\x32\x1b.connectstate.ProvidedTrack\x12\x30\n\x0bnext_tracks\x18\x14 \x03(\x0b\x32\x1b.connectstate.ProvidedTrack\x12H\n\x10\x63ontext_metadata\x18\x15 \x03(\x0b\x32..connectstate.PlayerState.ContextMetadataEntry\x12\x42\n\rpage_metadata\x18\x16 \x03(\x0b\x32+.connectstate.PlayerState.PageMetadataEntry\x12\x12\n\nsession_id\x18\x17 \x01(\t\x12\x16\n\x0equeue_revision\x18\x18 \x01(\t\x12\x10\n\x08position\x18\x19 \x01(\x03\x12\x12\n\nentity_uri\x18\x1a \x01(\t\x12,\n\x07reverse\x18\x1b \x03(\x0b\x32\x1b.connectstate.ProvidedTrack\x12+\n\x06\x66uture\x18\x1c \x03(\x0b\x32\x1b.connectstate.ProvidedTrack\x1a\x36\n\x14\x43ontextMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x33\n\x11PageMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xda\x02\n\rProvidedTrack\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x0b\n\x03uid\x18\x02 \x01(\t\x12;\n\x08metadata\x18\x03 \x03(\x0b\x32).connectstate.ProvidedTrack.MetadataEntry\x12\x0f\n\x07removed\x18\x04 \x03(\t\x12\x0f\n\x07\x62locked\x18\x05 \x03(\t\x12\x10\n\x08provider\x18\x06 \x01(\t\x12\x30\n\x0crestrictions\x18\x07 \x01(\x0b\x32\x1a.connectstate.Restrictions\x12\x11\n\talbum_uri\x18\x08 \x01(\t\x12\x18\n\x10\x64isallow_reasons\x18\t \x03(\t\x12\x12\n\nartist_uri\x18\n \x01(\t\x12\x1a\n\x12\x64isallow_undecided\x18\x0b \x03(\t\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"+\n\x0c\x43ontextIndex\x12\x0c\n\x04page\x18\x01 \x01(\r\x12\r\n\x05track\x18\x02 \x01(\r\"\x80\x08\n\x0cRestrictions\x12 \n\x18\x64isallow_pausing_reasons\x18\x01 \x03(\t\x12!\n\x19\x64isallow_resuming_reasons\x18\x02 \x03(\t\x12 \n\x18\x64isallow_seeking_reasons\x18\x03 \x03(\t\x12%\n\x1d\x64isallow_peeking_prev_reasons\x18\x04 \x03(\t\x12%\n\x1d\x64isallow_peeking_next_reasons\x18\x05 \x03(\t\x12&\n\x1e\x64isallow_skipping_prev_reasons\x18\x06 \x03(\t\x12&\n\x1e\x64isallow_skipping_next_reasons\x18\x07 \x03(\t\x12\x30\n(disallow_toggling_repeat_context_reasons\x18\x08 \x03(\t\x12.\n&disallow_toggling_repeat_track_reasons\x18\t \x03(\t\x12)\n!disallow_toggling_shuffle_reasons\x18\n \x03(\t\x12\"\n\x1a\x64isallow_set_queue_reasons\x18\x0b \x03(\t\x12.\n&disallow_interrupting_playback_reasons\x18\x0c \x03(\t\x12.\n&disallow_transferring_playback_reasons\x18\r \x03(\t\x12\'\n\x1f\x64isallow_remote_control_reasons\x18\x0e \x03(\t\x12\x33\n+disallow_inserting_into_next_tracks_reasons\x18\x0f \x03(\t\x12\x36\n.disallow_inserting_into_context_tracks_reasons\x18\x10 \x03(\t\x12\x32\n*disallow_reordering_in_next_tracks_reasons\x18\x11 \x03(\t\x12\x35\n-disallow_reordering_in_context_tracks_reasons\x18\x12 \x03(\t\x12\x32\n*disallow_removing_from_next_tracks_reasons\x18\x13 \x03(\t\x12\x35\n-disallow_removing_from_context_tracks_reasons\x18\x14 \x03(\t\x12)\n!disallow_updating_context_reasons\x18\x15 \x03(\t\x12 \n\x18\x64isallow_playing_reasons\x18\x16 \x03(\t\x12!\n\x19\x64isallow_stopping_reasons\x18\x17 \x03(\t\"\xbf\x01\n\nPlayOrigin\x12\x1a\n\x12\x66\x65\x61ture_identifier\x18\x01 \x01(\t\x12\x17\n\x0f\x66\x65\x61ture_version\x18\x02 \x01(\t\x12\x10\n\x08view_uri\x18\x03 \x01(\t\x12\x19\n\x11\x65xternal_referrer\x18\x04 \x01(\t\x12\x1b\n\x13referrer_identifier\x18\x05 \x01(\t\x12\x19\n\x11\x64\x65vice_identifier\x18\x06 \x01(\t\x12\x17\n\x0f\x66\x65\x61ture_classes\x18\x07 \x03(\t\"e\n\x14\x43ontextPlayerOptions\x12\x19\n\x11shuffling_context\x18\x01 \x01(\x08\x12\x19\n\x11repeating_context\x18\x02 \x01(\x08\x12\x17\n\x0frepeating_track\x18\x03 \x01(\x08\"!\n\x0cSuppressions\x12\x11\n\tproviders\x18\x01 \x03(\tB\x1c\n\x18\x63om.spotify.connectstateH\x02\x62\x06proto3' -) - -_PLAYERSTATE_CONTEXTMETADATAENTRY = _descriptor.Descriptor( - name='ContextMetadataEntry', - full_name='connectstate.PlayerState.ContextMetadataEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', - full_name='connectstate.PlayerState.ContextMetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', - full_name='connectstate.PlayerState.ContextMetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b'8\001', - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1054, - serialized_end=1108, -) - -_PLAYERSTATE_PAGEMETADATAENTRY = _descriptor.Descriptor( - name='PageMetadataEntry', - full_name='connectstate.PlayerState.PageMetadataEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', - full_name='connectstate.PlayerState.PageMetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', - full_name='connectstate.PlayerState.PageMetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b'8\001', - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1110, - serialized_end=1161, -) - -_PLAYERSTATE = _descriptor.Descriptor( - name='PlayerState', - full_name='connectstate.PlayerState', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='timestamp', - full_name='connectstate.PlayerState.timestamp', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='context_uri', - full_name='connectstate.PlayerState.context_uri', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='context_url', - full_name='connectstate.PlayerState.context_url', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='context_restrictions', - full_name='connectstate.PlayerState.context_restrictions', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='play_origin', - full_name='connectstate.PlayerState.play_origin', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='index', - full_name='connectstate.PlayerState.index', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='track', - full_name='connectstate.PlayerState.track', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='playback_id', - full_name='connectstate.PlayerState.playback_id', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='playback_speed', - full_name='connectstate.PlayerState.playback_speed', - index=8, - number=9, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='position_as_of_timestamp', - full_name='connectstate.PlayerState.position_as_of_timestamp', - index=9, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='duration', - full_name='connectstate.PlayerState.duration', - index=10, - number=11, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_playing', - full_name='connectstate.PlayerState.is_playing', - index=11, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_paused', - full_name='connectstate.PlayerState.is_paused', - index=12, - number=13, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_buffering', - full_name='connectstate.PlayerState.is_buffering', - index=13, - number=14, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_system_initiated', - full_name='connectstate.PlayerState.is_system_initiated', - index=14, - number=15, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='options', - full_name='connectstate.PlayerState.options', - index=15, - number=16, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='restrictions', - full_name='connectstate.PlayerState.restrictions', - index=16, - number=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='suppressions', - full_name='connectstate.PlayerState.suppressions', - index=17, - number=18, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='prev_tracks', - full_name='connectstate.PlayerState.prev_tracks', - index=18, - number=19, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='next_tracks', - full_name='connectstate.PlayerState.next_tracks', - index=19, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='context_metadata', - full_name='connectstate.PlayerState.context_metadata', - index=20, - number=21, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='page_metadata', - full_name='connectstate.PlayerState.page_metadata', - index=21, - number=22, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='session_id', - full_name='connectstate.PlayerState.session_id', - index=22, - number=23, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='queue_revision', - full_name='connectstate.PlayerState.queue_revision', - index=23, - number=24, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='position', - full_name='connectstate.PlayerState.position', - index=24, - number=25, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='entity_uri', - full_name='connectstate.PlayerState.entity_uri', - index=25, - number=26, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reverse', - full_name='connectstate.PlayerState.reverse', - index=26, - number=27, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='future', - full_name='connectstate.PlayerState.future', - index=27, - number=28, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[ - _PLAYERSTATE_CONTEXTMETADATAENTRY, - _PLAYERSTATE_PAGEMETADATAENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=31, - serialized_end=1161, -) - -_PROVIDEDTRACK_METADATAENTRY = _descriptor.Descriptor( - name='MetadataEntry', - full_name='connectstate.ProvidedTrack.MetadataEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', - full_name='connectstate.ProvidedTrack.MetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', - full_name='connectstate.ProvidedTrack.MetadataEntry.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b'8\001', - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1463, - serialized_end=1510, -) - -_PROVIDEDTRACK = _descriptor.Descriptor( - name='ProvidedTrack', - full_name='connectstate.ProvidedTrack', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uri', - full_name='connectstate.ProvidedTrack.uri', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uid', - full_name='connectstate.ProvidedTrack.uid', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='metadata', - full_name='connectstate.ProvidedTrack.metadata', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='removed', - full_name='connectstate.ProvidedTrack.removed', - index=3, - number=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='blocked', - full_name='connectstate.ProvidedTrack.blocked', - index=4, - number=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='provider', - full_name='connectstate.ProvidedTrack.provider', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='restrictions', - full_name='connectstate.ProvidedTrack.restrictions', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='album_uri', - full_name='connectstate.ProvidedTrack.album_uri', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_reasons', - full_name='connectstate.ProvidedTrack.disallow_reasons', - index=8, - number=9, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='artist_uri', - full_name='connectstate.ProvidedTrack.artist_uri', - index=9, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_undecided', - full_name='connectstate.ProvidedTrack.disallow_undecided', - index=10, - number=11, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[ - _PROVIDEDTRACK_METADATAENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1164, - serialized_end=1510, -) - -_CONTEXTINDEX = _descriptor.Descriptor( - name='ContextIndex', - full_name='connectstate.ContextIndex', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='page', - full_name='connectstate.ContextIndex.page', - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='track', - full_name='connectstate.ContextIndex.track', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1512, - serialized_end=1555, -) - -_RESTRICTIONS = _descriptor.Descriptor( - name='Restrictions', - full_name='connectstate.Restrictions', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='disallow_pausing_reasons', - full_name='connectstate.Restrictions.disallow_pausing_reasons', - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_resuming_reasons', - full_name='connectstate.Restrictions.disallow_resuming_reasons', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_seeking_reasons', - full_name='connectstate.Restrictions.disallow_seeking_reasons', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_peeking_prev_reasons', - full_name='connectstate.Restrictions.disallow_peeking_prev_reasons', - index=3, - number=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_peeking_next_reasons', - full_name='connectstate.Restrictions.disallow_peeking_next_reasons', - index=4, - number=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_skipping_prev_reasons', - full_name= - 'connectstate.Restrictions.disallow_skipping_prev_reasons', - index=5, - number=6, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_skipping_next_reasons', - full_name= - 'connectstate.Restrictions.disallow_skipping_next_reasons', - index=6, - number=7, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_toggling_repeat_context_reasons', - full_name= - 'connectstate.Restrictions.disallow_toggling_repeat_context_reasons', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_toggling_repeat_track_reasons', - full_name= - 'connectstate.Restrictions.disallow_toggling_repeat_track_reasons', - index=8, - number=9, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_toggling_shuffle_reasons', - full_name= - 'connectstate.Restrictions.disallow_toggling_shuffle_reasons', - index=9, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_set_queue_reasons', - full_name='connectstate.Restrictions.disallow_set_queue_reasons', - index=10, - number=11, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_interrupting_playback_reasons', - full_name= - 'connectstate.Restrictions.disallow_interrupting_playback_reasons', - index=11, - number=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_transferring_playback_reasons', - full_name= - 'connectstate.Restrictions.disallow_transferring_playback_reasons', - index=12, - number=13, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_remote_control_reasons', - full_name= - 'connectstate.Restrictions.disallow_remote_control_reasons', - index=13, - number=14, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_inserting_into_next_tracks_reasons', - full_name= - 'connectstate.Restrictions.disallow_inserting_into_next_tracks_reasons', - index=14, - number=15, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_inserting_into_context_tracks_reasons', - full_name= - 'connectstate.Restrictions.disallow_inserting_into_context_tracks_reasons', - index=15, - number=16, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_reordering_in_next_tracks_reasons', - full_name= - 'connectstate.Restrictions.disallow_reordering_in_next_tracks_reasons', - index=16, - number=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_reordering_in_context_tracks_reasons', - full_name= - 'connectstate.Restrictions.disallow_reordering_in_context_tracks_reasons', - index=17, - number=18, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_removing_from_next_tracks_reasons', - full_name= - 'connectstate.Restrictions.disallow_removing_from_next_tracks_reasons', - index=18, - number=19, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_removing_from_context_tracks_reasons', - full_name= - 'connectstate.Restrictions.disallow_removing_from_context_tracks_reasons', - index=19, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_updating_context_reasons', - full_name= - 'connectstate.Restrictions.disallow_updating_context_reasons', - index=20, - number=21, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_playing_reasons', - full_name='connectstate.Restrictions.disallow_playing_reasons', - index=21, - number=22, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='disallow_stopping_reasons', - full_name='connectstate.Restrictions.disallow_stopping_reasons', - index=22, - number=23, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=1558, - serialized_end=2582, -) - -_PLAYORIGIN = _descriptor.Descriptor( - name='PlayOrigin', - full_name='connectstate.PlayOrigin', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='feature_identifier', - full_name='connectstate.PlayOrigin.feature_identifier', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='feature_version', - full_name='connectstate.PlayOrigin.feature_version', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='view_uri', - full_name='connectstate.PlayOrigin.view_uri', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='external_referrer', - full_name='connectstate.PlayOrigin.external_referrer', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='referrer_identifier', - full_name='connectstate.PlayOrigin.referrer_identifier', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_identifier', - full_name='connectstate.PlayOrigin.device_identifier', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='feature_classes', - full_name='connectstate.PlayOrigin.feature_classes', - index=6, - number=7, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=2585, - serialized_end=2776, -) - -_CONTEXTPLAYEROPTIONS = _descriptor.Descriptor( - name='ContextPlayerOptions', - full_name='connectstate.ContextPlayerOptions', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='shuffling_context', - full_name='connectstate.ContextPlayerOptions.shuffling_context', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='repeating_context', - full_name='connectstate.ContextPlayerOptions.repeating_context', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='repeating_track', - full_name='connectstate.ContextPlayerOptions.repeating_track', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=2778, - serialized_end=2879, -) - -_SUPPRESSIONS = _descriptor.Descriptor( - name='Suppressions', - full_name='connectstate.Suppressions', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='providers', - full_name='connectstate.Suppressions.providers', - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=2881, - serialized_end=2914, -) - -_PLAYERSTATE_CONTEXTMETADATAENTRY.containing_type = _PLAYERSTATE -_PLAYERSTATE_PAGEMETADATAENTRY.containing_type = _PLAYERSTATE -_PLAYERSTATE.fields_by_name[ - 'context_restrictions'].message_type = _RESTRICTIONS -_PLAYERSTATE.fields_by_name['play_origin'].message_type = _PLAYORIGIN -_PLAYERSTATE.fields_by_name['index'].message_type = _CONTEXTINDEX -_PLAYERSTATE.fields_by_name['track'].message_type = _PROVIDEDTRACK -_PLAYERSTATE.fields_by_name['options'].message_type = _CONTEXTPLAYEROPTIONS -_PLAYERSTATE.fields_by_name['restrictions'].message_type = _RESTRICTIONS -_PLAYERSTATE.fields_by_name['suppressions'].message_type = _SUPPRESSIONS -_PLAYERSTATE.fields_by_name['prev_tracks'].message_type = _PROVIDEDTRACK -_PLAYERSTATE.fields_by_name['next_tracks'].message_type = _PROVIDEDTRACK -_PLAYERSTATE.fields_by_name[ - 'context_metadata'].message_type = _PLAYERSTATE_CONTEXTMETADATAENTRY -_PLAYERSTATE.fields_by_name[ - 'page_metadata'].message_type = _PLAYERSTATE_PAGEMETADATAENTRY -_PLAYERSTATE.fields_by_name['reverse'].message_type = _PROVIDEDTRACK -_PLAYERSTATE.fields_by_name['future'].message_type = _PROVIDEDTRACK -_PROVIDEDTRACK_METADATAENTRY.containing_type = _PROVIDEDTRACK -_PROVIDEDTRACK.fields_by_name[ - 'metadata'].message_type = _PROVIDEDTRACK_METADATAENTRY -_PROVIDEDTRACK.fields_by_name['restrictions'].message_type = _RESTRICTIONS -DESCRIPTOR.message_types_by_name['PlayerState'] = _PLAYERSTATE -DESCRIPTOR.message_types_by_name['ProvidedTrack'] = _PROVIDEDTRACK -DESCRIPTOR.message_types_by_name['ContextIndex'] = _CONTEXTINDEX -DESCRIPTOR.message_types_by_name['Restrictions'] = _RESTRICTIONS -DESCRIPTOR.message_types_by_name['PlayOrigin'] = _PLAYORIGIN -DESCRIPTOR.message_types_by_name[ - 'ContextPlayerOptions'] = _CONTEXTPLAYEROPTIONS -DESCRIPTOR.message_types_by_name['Suppressions'] = _SUPPRESSIONS -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -PlayerState = _reflection.GeneratedProtocolMessageType( - 'PlayerState', - (_message.Message, ), - { - 'ContextMetadataEntry': - _reflection.GeneratedProtocolMessageType( - 'ContextMetadataEntry', - (_message.Message, ), - { - 'DESCRIPTOR': _PLAYERSTATE_CONTEXTMETADATAENTRY, - '__module__': 'player_pb2' - # @@protoc_insertion_point(class_scope:connectstate.PlayerState.ContextMetadataEntry) - }), - 'PageMetadataEntry': - _reflection.GeneratedProtocolMessageType( - 'PageMetadataEntry', - (_message.Message, ), - { - 'DESCRIPTOR': _PLAYERSTATE_PAGEMETADATAENTRY, - '__module__': 'player_pb2' - # @@protoc_insertion_point(class_scope:connectstate.PlayerState.PageMetadataEntry) - }), - 'DESCRIPTOR': - _PLAYERSTATE, - '__module__': - 'player_pb2' - # @@protoc_insertion_point(class_scope:connectstate.PlayerState) - }) -_sym_db.RegisterMessage(PlayerState) -_sym_db.RegisterMessage(PlayerState.ContextMetadataEntry) -_sym_db.RegisterMessage(PlayerState.PageMetadataEntry) - -ProvidedTrack = _reflection.GeneratedProtocolMessageType( - 'ProvidedTrack', - (_message.Message, ), - { - 'MetadataEntry': - _reflection.GeneratedProtocolMessageType( - 'MetadataEntry', - (_message.Message, ), - { - 'DESCRIPTOR': _PROVIDEDTRACK_METADATAENTRY, - '__module__': 'player_pb2' - # @@protoc_insertion_point(class_scope:connectstate.ProvidedTrack.MetadataEntry) - }), - 'DESCRIPTOR': - _PROVIDEDTRACK, - '__module__': - 'player_pb2' - # @@protoc_insertion_point(class_scope:connectstate.ProvidedTrack) - }) -_sym_db.RegisterMessage(ProvidedTrack) -_sym_db.RegisterMessage(ProvidedTrack.MetadataEntry) - -ContextIndex = _reflection.GeneratedProtocolMessageType( - 'ContextIndex', - (_message.Message, ), - { - 'DESCRIPTOR': _CONTEXTINDEX, - '__module__': 'player_pb2' - # @@protoc_insertion_point(class_scope:connectstate.ContextIndex) - }) -_sym_db.RegisterMessage(ContextIndex) - -Restrictions = _reflection.GeneratedProtocolMessageType( - 'Restrictions', - (_message.Message, ), - { - 'DESCRIPTOR': _RESTRICTIONS, - '__module__': 'player_pb2' - # @@protoc_insertion_point(class_scope:connectstate.Restrictions) - }) -_sym_db.RegisterMessage(Restrictions) - -PlayOrigin = _reflection.GeneratedProtocolMessageType( - 'PlayOrigin', - (_message.Message, ), - { - 'DESCRIPTOR': _PLAYORIGIN, - '__module__': 'player_pb2' - # @@protoc_insertion_point(class_scope:connectstate.PlayOrigin) - }) -_sym_db.RegisterMessage(PlayOrigin) - -ContextPlayerOptions = _reflection.GeneratedProtocolMessageType( - 'ContextPlayerOptions', - (_message.Message, ), - { - 'DESCRIPTOR': _CONTEXTPLAYEROPTIONS, - '__module__': 'player_pb2' - # @@protoc_insertion_point(class_scope:connectstate.ContextPlayerOptions) - }) -_sym_db.RegisterMessage(ContextPlayerOptions) - -Suppressions = _reflection.GeneratedProtocolMessageType( - 'Suppressions', - (_message.Message, ), - { - 'DESCRIPTOR': _SUPPRESSIONS, - '__module__': 'player_pb2' - # @@protoc_insertion_point(class_scope:connectstate.Suppressions) - }) -_sym_db.RegisterMessage(Suppressions) - -DESCRIPTOR._options = None -_PLAYERSTATE_CONTEXTMETADATAENTRY._options = None -_PLAYERSTATE_PAGEMETADATAENTRY._options = None -_PROVIDEDTRACK_METADATAENTRY._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Playlist4External_pb2.py b/librespot/proto/Playlist4External_pb2.py deleted file mode 100644 index f49f4ff..0000000 --- a/librespot/proto/Playlist4External_pb2.py +++ /dev/null @@ -1,3221 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: playlist4_external.proto -"""Generated protocol buffer code.""" -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.internal import enum_type_wrapper - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="playlist4_external.proto", - package="spotify.playlist4.proto", - syntax="proto2", - serialized_options= - b"\n\025com.spotify.playlist4B\021Playlist4ApiProtoH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x18playlist4_external.proto\x12\x17spotify.playlist4.proto"P\n\x04Item\x12\x0b\n\x03uri\x18\x01 \x02(\t\x12;\n\nattributes\x18\x02 \x01(\x0b\x32\'.spotify.playlist4.proto.ItemAttributes"\x94\x01\n\x08MetaItem\x12\x10\n\x08revision\x18\x01 \x01(\x0c\x12;\n\nattributes\x18\x02 \x01(\x0b\x32\'.spotify.playlist4.proto.ListAttributes\x12\x0e\n\x06length\x18\x03 \x01(\x05\x12\x11\n\ttimestamp\x18\x04 \x01(\x03\x12\x16\n\x0eowner_username\x18\x05 \x01(\t"\x90\x01\n\tListItems\x12\x0b\n\x03pos\x18\x01 \x02(\x05\x12\x11\n\ttruncated\x18\x02 \x02(\x08\x12,\n\x05items\x18\x03 \x03(\x0b\x32\x1d.spotify.playlist4.proto.Item\x12\x35\n\nmeta_items\x18\x04 \x03(\x0b\x32!.spotify.playlist4.proto.MetaItem"1\n\x13\x46ormatListAttribute\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t"\xf6\x01\n\x0eListAttributes\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0f\n\x07picture\x18\x03 \x01(\x0c\x12\x15\n\rcollaborative\x18\x04 \x01(\x08\x12\x13\n\x0bpl3_version\x18\x05 \x01(\t\x12\x18\n\x10\x64\x65leted_by_owner\x18\x06 \x01(\x08\x12\x11\n\tclient_id\x18\n \x01(\t\x12\x0e\n\x06\x66ormat\x18\x0b \x01(\t\x12G\n\x11\x66ormat_attributes\x18\x0c \x03(\x0b\x32,.spotify.playlist4.proto.FormatListAttribute"\xb0\x01\n\x0eItemAttributes\x12\x10\n\x08\x61\x64\x64\x65\x64_by\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\x12\x0f\n\x07seen_at\x18\t \x01(\x03\x12\x0e\n\x06public\x18\n \x01(\x08\x12G\n\x11\x66ormat_attributes\x18\x0b \x03(\x0b\x32,.spotify.playlist4.proto.FormatListAttribute\x12\x0f\n\x07item_id\x18\x0c \x01(\x0c"l\n\x03\x41\x64\x64\x12\x12\n\nfrom_index\x18\x01 \x01(\x05\x12,\n\x05items\x18\x02 \x03(\x0b\x32\x1d.spotify.playlist4.proto.Item\x12\x10\n\x08\x61\x64\x64_last\x18\x04 \x01(\x08\x12\x11\n\tadd_first\x18\x05 \x01(\x08"m\n\x03Rem\x12\x12\n\nfrom_index\x18\x01 \x01(\x05\x12\x0e\n\x06length\x18\x02 \x01(\x05\x12,\n\x05items\x18\x03 \x03(\x0b\x32\x1d.spotify.playlist4.proto.Item\x12\x14\n\x0citems_as_key\x18\x07 \x01(\x08";\n\x03Mov\x12\x12\n\nfrom_index\x18\x01 \x02(\x05\x12\x0e\n\x06length\x18\x02 \x02(\x05\x12\x10\n\x08to_index\x18\x03 \x02(\x05"\x93\x01\n\x1aItemAttributesPartialState\x12\x37\n\x06values\x18\x01 \x02(\x0b\x32\'.spotify.playlist4.proto.ItemAttributes\x12<\n\x08no_value\x18\x02 \x03(\x0e\x32*.spotify.playlist4.proto.ItemAttributeKind"\x93\x01\n\x1aListAttributesPartialState\x12\x37\n\x06values\x18\x01 \x02(\x0b\x32\'.spotify.playlist4.proto.ListAttributes\x12<\n\x08no_value\x18\x02 \x03(\x0e\x32*.spotify.playlist4.proto.ListAttributeKind"\xbf\x01\n\x14UpdateItemAttributes\x12\r\n\x05index\x18\x01 \x02(\x05\x12K\n\x0enew_attributes\x18\x02 \x02(\x0b\x32\x33.spotify.playlist4.proto.ItemAttributesPartialState\x12K\n\x0eold_attributes\x18\x03 \x01(\x0b\x32\x33.spotify.playlist4.proto.ItemAttributesPartialState"\xb0\x01\n\x14UpdateListAttributes\x12K\n\x0enew_attributes\x18\x01 \x02(\x0b\x32\x33.spotify.playlist4.proto.ListAttributesPartialState\x12K\n\x0eold_attributes\x18\x02 \x01(\x0b\x32\x33.spotify.playlist4.proto.ListAttributesPartialState"\xc0\x03\n\x02Op\x12.\n\x04kind\x18\x01 \x02(\x0e\x32 .spotify.playlist4.proto.Op.Kind\x12)\n\x03\x61\x64\x64\x18\x02 \x01(\x0b\x32\x1c.spotify.playlist4.proto.Add\x12)\n\x03rem\x18\x03 \x01(\x0b\x32\x1c.spotify.playlist4.proto.Rem\x12)\n\x03mov\x18\x04 \x01(\x0b\x32\x1c.spotify.playlist4.proto.Mov\x12M\n\x16update_item_attributes\x18\x05 \x01(\x0b\x32-.spotify.playlist4.proto.UpdateItemAttributes\x12M\n\x16update_list_attributes\x18\x06 \x01(\x0b\x32-.spotify.playlist4.proto.UpdateListAttributes"k\n\x04Kind\x12\x10\n\x0cKIND_UNKNOWN\x10\x00\x12\x07\n\x03\x41\x44\x44\x10\x02\x12\x07\n\x03REM\x10\x03\x12\x07\n\x03MOV\x10\x04\x12\x1a\n\x16UPDATE_ITEM_ATTRIBUTES\x10\x05\x12\x1a\n\x16UPDATE_LIST_ATTRIBUTES\x10\x06"2\n\x06OpList\x12(\n\x03ops\x18\x01 \x03(\x0b\x32\x1b.spotify.playlist4.proto.Op"\xd5\x01\n\nChangeInfo\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\x12\r\n\x05\x61\x64min\x18\x03 \x01(\x08\x12\x0c\n\x04undo\x18\x04 \x01(\x08\x12\x0c\n\x04redo\x18\x05 \x01(\x08\x12\r\n\x05merge\x18\x06 \x01(\x08\x12\x12\n\ncompressed\x18\x07 \x01(\x08\x12\x11\n\tmigration\x18\x08 \x01(\x08\x12\x10\n\x08split_id\x18\t \x01(\x05\x12\x33\n\x06source\x18\n \x01(\x0b\x32#.spotify.playlist4.proto.SourceInfo"\xe8\x01\n\nSourceInfo\x12:\n\x06\x63lient\x18\x01 \x01(\x0e\x32*.spotify.playlist4.proto.SourceInfo.Client\x12\x0b\n\x03\x61pp\x18\x03 \x01(\t\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x0f\n\x07version\x18\x05 \x01(\t"p\n\x06\x43lient\x12\x12\n\x0e\x43LIENT_UNKNOWN\x10\x00\x12\x11\n\rNATIVE_HERMES\x10\x01\x12\n\n\x06\x43LIENT\x10\x02\x12\n\n\x06PYTHON\x10\x03\x12\x08\n\x04JAVA\x10\x04\x12\r\n\tWEBPLAYER\x10\x05\x12\x0e\n\nLIBSPOTIFY\x10\x06"z\n\x05\x44\x65lta\x12\x14\n\x0c\x62\x61se_version\x18\x01 \x01(\x0c\x12(\n\x03ops\x18\x02 \x03(\x0b\x32\x1b.spotify.playlist4.proto.Op\x12\x31\n\x04info\x18\x04 \x01(\x0b\x32#.spotify.playlist4.proto.ChangeInfo"\\\n\x04\x44iff\x12\x15\n\rfrom_revision\x18\x01 \x02(\x0c\x12(\n\x03ops\x18\x02 \x03(\x0b\x32\x1b.spotify.playlist4.proto.Op\x12\x13\n\x0bto_revision\x18\x03 \x02(\x0c"\xa0\x01\n\x0bListChanges\x12\x15\n\rbase_revision\x18\x01 \x01(\x0c\x12.\n\x06\x64\x65ltas\x18\x02 \x03(\x0b\x32\x1e.spotify.playlist4.proto.Delta\x12 \n\x18want_resulting_revisions\x18\x03 \x01(\x08\x12\x18\n\x10want_sync_result\x18\x04 \x01(\x08\x12\x0e\n\x06nonces\x18\x06 \x03(\x03"\x8f\x03\n\x13SelectedListContent\x12\x10\n\x08revision\x18\x01 \x01(\x0c\x12\x0e\n\x06length\x18\x02 \x01(\x05\x12;\n\nattributes\x18\x03 \x01(\x0b\x32\'.spotify.playlist4.proto.ListAttributes\x12\x34\n\x08\x63ontents\x18\x05 \x01(\x0b\x32".spotify.playlist4.proto.ListItems\x12+\n\x04\x64iff\x18\x06 \x01(\x0b\x32\x1d.spotify.playlist4.proto.Diff\x12\x32\n\x0bsync_result\x18\x07 \x01(\x0b\x32\x1d.spotify.playlist4.proto.Diff\x12\x1b\n\x13resulting_revisions\x18\x08 \x03(\x0c\x12\x16\n\x0emultiple_heads\x18\t \x01(\x08\x12\x12\n\nup_to_date\x18\n \x01(\x08\x12\x0e\n\x06nonces\x18\x0e \x03(\x03\x12\x11\n\ttimestamp\x18\x0f \x01(\x03\x12\x16\n\x0eowner_username\x18\x10 \x01(\t"0\n\x0f\x43reateListReply\x12\x0b\n\x03uri\x18\x01 \x02(\x0c\x12\x10\n\x08revision\x18\x02 \x01(\x0c",\n\x0bModifyReply\x12\x0b\n\x03uri\x18\x01 \x02(\x0c\x12\x10\n\x08revision\x18\x02 \x01(\x0c" \n\x10SubscribeRequest\x12\x0c\n\x04uris\x18\x01 \x03(\x0c""\n\x12UnsubscribeRequest\x12\x0c\n\x04uris\x18\x01 \x03(\x0c"\x80\x01\n\x18PlaylistModificationInfo\x12\x0b\n\x03uri\x18\x01 \x01(\x0c\x12\x14\n\x0cnew_revision\x18\x02 \x01(\x0c\x12\x17\n\x0fparent_revision\x18\x03 \x01(\x0c\x12(\n\x03ops\x18\x04 \x03(\x0b\x32\x1b.spotify.playlist4.proto.Op*\xe6\x01\n\x11ListAttributeKind\x12\x10\n\x0cLIST_UNKNOWN\x10\x00\x12\r\n\tLIST_NAME\x10\x01\x12\x14\n\x10LIST_DESCRIPTION\x10\x02\x12\x10\n\x0cLIST_PICTURE\x10\x03\x12\x16\n\x12LIST_COLLABORATIVE\x10\x04\x12\x14\n\x10LIST_PL3_VERSION\x10\x05\x12\x19\n\x15LIST_DELETED_BY_OWNER\x10\x06\x12\x12\n\x0eLIST_CLIENT_ID\x10\n\x12\x0f\n\x0bLIST_FORMAT\x10\x0b\x12\x1a\n\x16LIST_FORMAT_ATTRIBUTES\x10\x0c*\x98\x01\n\x11ItemAttributeKind\x12\x10\n\x0cITEM_UNKNOWN\x10\x00\x12\x11\n\rITEM_ADDED_BY\x10\x01\x12\x12\n\x0eITEM_TIMESTAMP\x10\x02\x12\x10\n\x0cITEM_SEEN_AT\x10\t\x12\x0f\n\x0bITEM_PUBLIC\x10\n\x12\x1a\n\x16ITEM_FORMAT_ATTRIBUTES\x10\x0b\x12\x0b\n\x07ITEM_ID\x10\x0c\x42,\n\x15\x63om.spotify.playlist4B\x11Playlist4ApiProtoH\x02', -) - -_LISTATTRIBUTEKIND = _descriptor.EnumDescriptor( - name="ListAttributeKind", - full_name="spotify.playlist4.proto.ListAttributeKind", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="LIST_UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LIST_NAME", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LIST_DESCRIPTION", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LIST_PICTURE", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LIST_COLLABORATIVE", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LIST_PL3_VERSION", - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LIST_DELETED_BY_OWNER", - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LIST_CLIENT_ID", - index=7, - number=10, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LIST_FORMAT", - index=8, - number=11, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LIST_FORMAT_ATTRIBUTES", - index=9, - number=12, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=3902, - serialized_end=4132, -) -_sym_db.RegisterEnumDescriptor(_LISTATTRIBUTEKIND) - -ListAttributeKind = enum_type_wrapper.EnumTypeWrapper(_LISTATTRIBUTEKIND) -_ITEMATTRIBUTEKIND = _descriptor.EnumDescriptor( - name="ItemAttributeKind", - full_name="spotify.playlist4.proto.ItemAttributeKind", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="ITEM_UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ITEM_ADDED_BY", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ITEM_TIMESTAMP", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ITEM_SEEN_AT", - index=3, - number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ITEM_PUBLIC", - index=4, - number=10, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ITEM_FORMAT_ATTRIBUTES", - index=5, - number=11, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ITEM_ID", - index=6, - number=12, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=4135, - serialized_end=4287, -) -_sym_db.RegisterEnumDescriptor(_ITEMATTRIBUTEKIND) - -ItemAttributeKind = enum_type_wrapper.EnumTypeWrapper(_ITEMATTRIBUTEKIND) -LIST_UNKNOWN = 0 -LIST_NAME = 1 -LIST_DESCRIPTION = 2 -LIST_PICTURE = 3 -LIST_COLLABORATIVE = 4 -LIST_PL3_VERSION = 5 -LIST_DELETED_BY_OWNER = 6 -LIST_CLIENT_ID = 10 -LIST_FORMAT = 11 -LIST_FORMAT_ATTRIBUTES = 12 -ITEM_UNKNOWN = 0 -ITEM_ADDED_BY = 1 -ITEM_TIMESTAMP = 2 -ITEM_SEEN_AT = 9 -ITEM_PUBLIC = 10 -ITEM_FORMAT_ATTRIBUTES = 11 -ITEM_ID = 12 - -_OP_KIND = _descriptor.EnumDescriptor( - name="Kind", - full_name="spotify.playlist4.proto.Op.Kind", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="KIND_UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ADD", - index=1, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="REM", - index=2, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="MOV", - index=3, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UPDATE_ITEM_ATTRIBUTES", - index=4, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UPDATE_LIST_ATTRIBUTES", - index=5, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=2209, - serialized_end=2316, -) -_sym_db.RegisterEnumDescriptor(_OP_KIND) - -_SOURCEINFO_CLIENT = _descriptor.EnumDescriptor( - name="Client", - full_name="spotify.playlist4.proto.SourceInfo.Client", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="CLIENT_UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="NATIVE_HERMES", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="CLIENT", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="PYTHON", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="JAVA", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="WEBPLAYER", - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LIBSPOTIFY", - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=2707, - serialized_end=2819, -) -_sym_db.RegisterEnumDescriptor(_SOURCEINFO_CLIENT) - -_ITEM = _descriptor.Descriptor( - name="Item", - full_name="spotify.playlist4.proto.Item", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="uri", - full_name="spotify.playlist4.proto.Item.uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="attributes", - full_name="spotify.playlist4.proto.Item.attributes", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=53, - serialized_end=133, -) - -_METAITEM = _descriptor.Descriptor( - name="MetaItem", - full_name="spotify.playlist4.proto.MetaItem", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="revision", - full_name="spotify.playlist4.proto.MetaItem.revision", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="attributes", - full_name="spotify.playlist4.proto.MetaItem.attributes", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="length", - full_name="spotify.playlist4.proto.MetaItem.length", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="timestamp", - full_name="spotify.playlist4.proto.MetaItem.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="owner_username", - full_name="spotify.playlist4.proto.MetaItem.owner_username", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=136, - serialized_end=284, -) - -_LISTITEMS = _descriptor.Descriptor( - name="ListItems", - full_name="spotify.playlist4.proto.ListItems", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pos", - full_name="spotify.playlist4.proto.ListItems.pos", - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="truncated", - full_name="spotify.playlist4.proto.ListItems.truncated", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="items", - full_name="spotify.playlist4.proto.ListItems.items", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="meta_items", - full_name="spotify.playlist4.proto.ListItems.meta_items", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=287, - serialized_end=431, -) - -_FORMATLISTATTRIBUTE = _descriptor.Descriptor( - name="FormatListAttribute", - full_name="spotify.playlist4.proto.FormatListAttribute", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="spotify.playlist4.proto.FormatListAttribute.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="spotify.playlist4.proto.FormatListAttribute.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=433, - serialized_end=482, -) - -_LISTATTRIBUTES = _descriptor.Descriptor( - name="ListAttributes", - full_name="spotify.playlist4.proto.ListAttributes", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="name", - full_name="spotify.playlist4.proto.ListAttributes.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="description", - full_name="spotify.playlist4.proto.ListAttributes.description", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="picture", - full_name="spotify.playlist4.proto.ListAttributes.picture", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="collaborative", - full_name="spotify.playlist4.proto.ListAttributes.collaborative", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pl3_version", - full_name="spotify.playlist4.proto.ListAttributes.pl3_version", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="deleted_by_owner", - full_name="spotify.playlist4.proto.ListAttributes.deleted_by_owner", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="client_id", - full_name="spotify.playlist4.proto.ListAttributes.client_id", - index=6, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="format", - full_name="spotify.playlist4.proto.ListAttributes.format", - index=7, - number=11, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="format_attributes", - full_name= - "spotify.playlist4.proto.ListAttributes.format_attributes", - index=8, - number=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=485, - serialized_end=731, -) - -_ITEMATTRIBUTES = _descriptor.Descriptor( - name="ItemAttributes", - full_name="spotify.playlist4.proto.ItemAttributes", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="added_by", - full_name="spotify.playlist4.proto.ItemAttributes.added_by", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="timestamp", - full_name="spotify.playlist4.proto.ItemAttributes.timestamp", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="seen_at", - full_name="spotify.playlist4.proto.ItemAttributes.seen_at", - index=2, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="public", - full_name="spotify.playlist4.proto.ItemAttributes.public", - index=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="format_attributes", - full_name= - "spotify.playlist4.proto.ItemAttributes.format_attributes", - index=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="item_id", - full_name="spotify.playlist4.proto.ItemAttributes.item_id", - index=5, - number=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=734, - serialized_end=910, -) - -_ADD = _descriptor.Descriptor( - name="Add", - full_name="spotify.playlist4.proto.Add", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="from_index", - full_name="spotify.playlist4.proto.Add.from_index", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="items", - full_name="spotify.playlist4.proto.Add.items", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="add_last", - full_name="spotify.playlist4.proto.Add.add_last", - index=2, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="add_first", - full_name="spotify.playlist4.proto.Add.add_first", - index=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=912, - serialized_end=1020, -) - -_REM = _descriptor.Descriptor( - name="Rem", - full_name="spotify.playlist4.proto.Rem", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="from_index", - full_name="spotify.playlist4.proto.Rem.from_index", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="length", - full_name="spotify.playlist4.proto.Rem.length", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="items", - full_name="spotify.playlist4.proto.Rem.items", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="items_as_key", - full_name="spotify.playlist4.proto.Rem.items_as_key", - index=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1022, - serialized_end=1131, -) - -_MOV = _descriptor.Descriptor( - name="Mov", - full_name="spotify.playlist4.proto.Mov", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="from_index", - full_name="spotify.playlist4.proto.Mov.from_index", - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="length", - full_name="spotify.playlist4.proto.Mov.length", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="to_index", - full_name="spotify.playlist4.proto.Mov.to_index", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1133, - serialized_end=1192, -) - -_ITEMATTRIBUTESPARTIALSTATE = _descriptor.Descriptor( - name="ItemAttributesPartialState", - full_name="spotify.playlist4.proto.ItemAttributesPartialState", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="values", - full_name= - "spotify.playlist4.proto.ItemAttributesPartialState.values", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="no_value", - full_name= - "spotify.playlist4.proto.ItemAttributesPartialState.no_value", - index=1, - number=2, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1195, - serialized_end=1342, -) - -_LISTATTRIBUTESPARTIALSTATE = _descriptor.Descriptor( - name="ListAttributesPartialState", - full_name="spotify.playlist4.proto.ListAttributesPartialState", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="values", - full_name= - "spotify.playlist4.proto.ListAttributesPartialState.values", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="no_value", - full_name= - "spotify.playlist4.proto.ListAttributesPartialState.no_value", - index=1, - number=2, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1345, - serialized_end=1492, -) - -_UPDATEITEMATTRIBUTES = _descriptor.Descriptor( - name="UpdateItemAttributes", - full_name="spotify.playlist4.proto.UpdateItemAttributes", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="index", - full_name="spotify.playlist4.proto.UpdateItemAttributes.index", - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="new_attributes", - full_name= - "spotify.playlist4.proto.UpdateItemAttributes.new_attributes", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="old_attributes", - full_name= - "spotify.playlist4.proto.UpdateItemAttributes.old_attributes", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1495, - serialized_end=1686, -) - -_UPDATELISTATTRIBUTES = _descriptor.Descriptor( - name="UpdateListAttributes", - full_name="spotify.playlist4.proto.UpdateListAttributes", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="new_attributes", - full_name= - "spotify.playlist4.proto.UpdateListAttributes.new_attributes", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="old_attributes", - full_name= - "spotify.playlist4.proto.UpdateListAttributes.old_attributes", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1689, - serialized_end=1865, -) - -_OP = _descriptor.Descriptor( - name="Op", - full_name="spotify.playlist4.proto.Op", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="kind", - full_name="spotify.playlist4.proto.Op.kind", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="add", - full_name="spotify.playlist4.proto.Op.add", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="rem", - full_name="spotify.playlist4.proto.Op.rem", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="mov", - full_name="spotify.playlist4.proto.Op.mov", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="update_item_attributes", - full_name="spotify.playlist4.proto.Op.update_item_attributes", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="update_list_attributes", - full_name="spotify.playlist4.proto.Op.update_list_attributes", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[ - _OP_KIND, - ], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1868, - serialized_end=2316, -) - -_OPLIST = _descriptor.Descriptor( - name="OpList", - full_name="spotify.playlist4.proto.OpList", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="ops", - full_name="spotify.playlist4.proto.OpList.ops", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2318, - serialized_end=2368, -) - -_CHANGEINFO = _descriptor.Descriptor( - name="ChangeInfo", - full_name="spotify.playlist4.proto.ChangeInfo", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="user", - full_name="spotify.playlist4.proto.ChangeInfo.user", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="timestamp", - full_name="spotify.playlist4.proto.ChangeInfo.timestamp", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="admin", - full_name="spotify.playlist4.proto.ChangeInfo.admin", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="undo", - full_name="spotify.playlist4.proto.ChangeInfo.undo", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="redo", - full_name="spotify.playlist4.proto.ChangeInfo.redo", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="merge", - full_name="spotify.playlist4.proto.ChangeInfo.merge", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="compressed", - full_name="spotify.playlist4.proto.ChangeInfo.compressed", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="migration", - full_name="spotify.playlist4.proto.ChangeInfo.migration", - index=7, - number=8, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="split_id", - full_name="spotify.playlist4.proto.ChangeInfo.split_id", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="source", - full_name="spotify.playlist4.proto.ChangeInfo.source", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2371, - serialized_end=2584, -) - -_SOURCEINFO = _descriptor.Descriptor( - name="SourceInfo", - full_name="spotify.playlist4.proto.SourceInfo", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="client", - full_name="spotify.playlist4.proto.SourceInfo.client", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="app", - full_name="spotify.playlist4.proto.SourceInfo.app", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="source", - full_name="spotify.playlist4.proto.SourceInfo.source", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="version", - full_name="spotify.playlist4.proto.SourceInfo.version", - index=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[ - _SOURCEINFO_CLIENT, - ], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2587, - serialized_end=2819, -) - -_DELTA = _descriptor.Descriptor( - name="Delta", - full_name="spotify.playlist4.proto.Delta", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="base_version", - full_name="spotify.playlist4.proto.Delta.base_version", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="ops", - full_name="spotify.playlist4.proto.Delta.ops", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="info", - full_name="spotify.playlist4.proto.Delta.info", - index=2, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2821, - serialized_end=2943, -) - -_DIFF = _descriptor.Descriptor( - name="Diff", - full_name="spotify.playlist4.proto.Diff", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="from_revision", - full_name="spotify.playlist4.proto.Diff.from_revision", - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="ops", - full_name="spotify.playlist4.proto.Diff.ops", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="to_revision", - full_name="spotify.playlist4.proto.Diff.to_revision", - index=2, - number=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2945, - serialized_end=3037, -) - -_LISTCHANGES = _descriptor.Descriptor( - name="ListChanges", - full_name="spotify.playlist4.proto.ListChanges", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="base_revision", - full_name="spotify.playlist4.proto.ListChanges.base_revision", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="deltas", - full_name="spotify.playlist4.proto.ListChanges.deltas", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="want_resulting_revisions", - full_name= - "spotify.playlist4.proto.ListChanges.want_resulting_revisions", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="want_sync_result", - full_name="spotify.playlist4.proto.ListChanges.want_sync_result", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="nonces", - full_name="spotify.playlist4.proto.ListChanges.nonces", - index=4, - number=6, - type=3, - cpp_type=2, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3040, - serialized_end=3200, -) - -_SELECTEDLISTCONTENT = _descriptor.Descriptor( - name="SelectedListContent", - full_name="spotify.playlist4.proto.SelectedListContent", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="revision", - full_name="spotify.playlist4.proto.SelectedListContent.revision", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="length", - full_name="spotify.playlist4.proto.SelectedListContent.length", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="attributes", - full_name="spotify.playlist4.proto.SelectedListContent.attributes", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="contents", - full_name="spotify.playlist4.proto.SelectedListContent.contents", - index=3, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="diff", - full_name="spotify.playlist4.proto.SelectedListContent.diff", - index=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sync_result", - full_name="spotify.playlist4.proto.SelectedListContent.sync_result", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="resulting_revisions", - full_name= - "spotify.playlist4.proto.SelectedListContent.resulting_revisions", - index=6, - number=8, - type=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="multiple_heads", - full_name= - "spotify.playlist4.proto.SelectedListContent.multiple_heads", - index=7, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="up_to_date", - full_name="spotify.playlist4.proto.SelectedListContent.up_to_date", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="nonces", - full_name="spotify.playlist4.proto.SelectedListContent.nonces", - index=9, - number=14, - type=3, - cpp_type=2, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="timestamp", - full_name="spotify.playlist4.proto.SelectedListContent.timestamp", - index=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="owner_username", - full_name= - "spotify.playlist4.proto.SelectedListContent.owner_username", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3203, - serialized_end=3602, -) - -_CREATELISTREPLY = _descriptor.Descriptor( - name="CreateListReply", - full_name="spotify.playlist4.proto.CreateListReply", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="uri", - full_name="spotify.playlist4.proto.CreateListReply.uri", - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="revision", - full_name="spotify.playlist4.proto.CreateListReply.revision", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3604, - serialized_end=3652, -) - -_MODIFYREPLY = _descriptor.Descriptor( - name="ModifyReply", - full_name="spotify.playlist4.proto.ModifyReply", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="uri", - full_name="spotify.playlist4.proto.ModifyReply.uri", - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="revision", - full_name="spotify.playlist4.proto.ModifyReply.revision", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3654, - serialized_end=3698, -) - -_SUBSCRIBEREQUEST = _descriptor.Descriptor( - name="SubscribeRequest", - full_name="spotify.playlist4.proto.SubscribeRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="uris", - full_name="spotify.playlist4.proto.SubscribeRequest.uris", - index=0, - number=1, - type=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3700, - serialized_end=3732, -) - -_UNSUBSCRIBEREQUEST = _descriptor.Descriptor( - name="UnsubscribeRequest", - full_name="spotify.playlist4.proto.UnsubscribeRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="uris", - full_name="spotify.playlist4.proto.UnsubscribeRequest.uris", - index=0, - number=1, - type=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3734, - serialized_end=3768, -) - -_PLAYLISTMODIFICATIONINFO = _descriptor.Descriptor( - name="PlaylistModificationInfo", - full_name="spotify.playlist4.proto.PlaylistModificationInfo", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="uri", - full_name="spotify.playlist4.proto.PlaylistModificationInfo.uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="new_revision", - full_name= - "spotify.playlist4.proto.PlaylistModificationInfo.new_revision", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="parent_revision", - full_name= - "spotify.playlist4.proto.PlaylistModificationInfo.parent_revision", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="ops", - full_name="spotify.playlist4.proto.PlaylistModificationInfo.ops", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3771, - serialized_end=3899, -) - -_ITEM.fields_by_name["attributes"].message_type = _ITEMATTRIBUTES -_METAITEM.fields_by_name["attributes"].message_type = _LISTATTRIBUTES -_LISTITEMS.fields_by_name["items"].message_type = _ITEM -_LISTITEMS.fields_by_name["meta_items"].message_type = _METAITEM -_LISTATTRIBUTES.fields_by_name[ - "format_attributes"].message_type = _FORMATLISTATTRIBUTE -_ITEMATTRIBUTES.fields_by_name[ - "format_attributes"].message_type = _FORMATLISTATTRIBUTE -_ADD.fields_by_name["items"].message_type = _ITEM -_REM.fields_by_name["items"].message_type = _ITEM -_ITEMATTRIBUTESPARTIALSTATE.fields_by_name[ - "values"].message_type = _ITEMATTRIBUTES -_ITEMATTRIBUTESPARTIALSTATE.fields_by_name[ - "no_value"].enum_type = _ITEMATTRIBUTEKIND -_LISTATTRIBUTESPARTIALSTATE.fields_by_name[ - "values"].message_type = _LISTATTRIBUTES -_LISTATTRIBUTESPARTIALSTATE.fields_by_name[ - "no_value"].enum_type = _LISTATTRIBUTEKIND -_UPDATEITEMATTRIBUTES.fields_by_name[ - "new_attributes"].message_type = _ITEMATTRIBUTESPARTIALSTATE -_UPDATEITEMATTRIBUTES.fields_by_name[ - "old_attributes"].message_type = _ITEMATTRIBUTESPARTIALSTATE -_UPDATELISTATTRIBUTES.fields_by_name[ - "new_attributes"].message_type = _LISTATTRIBUTESPARTIALSTATE -_UPDATELISTATTRIBUTES.fields_by_name[ - "old_attributes"].message_type = _LISTATTRIBUTESPARTIALSTATE -_OP.fields_by_name["kind"].enum_type = _OP_KIND -_OP.fields_by_name["add"].message_type = _ADD -_OP.fields_by_name["rem"].message_type = _REM -_OP.fields_by_name["mov"].message_type = _MOV -_OP.fields_by_name[ - "update_item_attributes"].message_type = _UPDATEITEMATTRIBUTES -_OP.fields_by_name[ - "update_list_attributes"].message_type = _UPDATELISTATTRIBUTES -_OP_KIND.containing_type = _OP -_OPLIST.fields_by_name["ops"].message_type = _OP -_CHANGEINFO.fields_by_name["source"].message_type = _SOURCEINFO -_SOURCEINFO.fields_by_name["client"].enum_type = _SOURCEINFO_CLIENT -_SOURCEINFO_CLIENT.containing_type = _SOURCEINFO -_DELTA.fields_by_name["ops"].message_type = _OP -_DELTA.fields_by_name["info"].message_type = _CHANGEINFO -_DIFF.fields_by_name["ops"].message_type = _OP -_LISTCHANGES.fields_by_name["deltas"].message_type = _DELTA -_SELECTEDLISTCONTENT.fields_by_name[ - "attributes"].message_type = _LISTATTRIBUTES -_SELECTEDLISTCONTENT.fields_by_name["contents"].message_type = _LISTITEMS -_SELECTEDLISTCONTENT.fields_by_name["diff"].message_type = _DIFF -_SELECTEDLISTCONTENT.fields_by_name["sync_result"].message_type = _DIFF -_PLAYLISTMODIFICATIONINFO.fields_by_name["ops"].message_type = _OP -DESCRIPTOR.message_types_by_name["Item"] = _ITEM -DESCRIPTOR.message_types_by_name["MetaItem"] = _METAITEM -DESCRIPTOR.message_types_by_name["ListItems"] = _LISTITEMS -DESCRIPTOR.message_types_by_name["FormatListAttribute"] = _FORMATLISTATTRIBUTE -DESCRIPTOR.message_types_by_name["ListAttributes"] = _LISTATTRIBUTES -DESCRIPTOR.message_types_by_name["ItemAttributes"] = _ITEMATTRIBUTES -DESCRIPTOR.message_types_by_name["Add"] = _ADD -DESCRIPTOR.message_types_by_name["Rem"] = _REM -DESCRIPTOR.message_types_by_name["Mov"] = _MOV -DESCRIPTOR.message_types_by_name[ - "ItemAttributesPartialState"] = _ITEMATTRIBUTESPARTIALSTATE -DESCRIPTOR.message_types_by_name[ - "ListAttributesPartialState"] = _LISTATTRIBUTESPARTIALSTATE -DESCRIPTOR.message_types_by_name[ - "UpdateItemAttributes"] = _UPDATEITEMATTRIBUTES -DESCRIPTOR.message_types_by_name[ - "UpdateListAttributes"] = _UPDATELISTATTRIBUTES -DESCRIPTOR.message_types_by_name["Op"] = _OP -DESCRIPTOR.message_types_by_name["OpList"] = _OPLIST -DESCRIPTOR.message_types_by_name["ChangeInfo"] = _CHANGEINFO -DESCRIPTOR.message_types_by_name["SourceInfo"] = _SOURCEINFO -DESCRIPTOR.message_types_by_name["Delta"] = _DELTA -DESCRIPTOR.message_types_by_name["Diff"] = _DIFF -DESCRIPTOR.message_types_by_name["ListChanges"] = _LISTCHANGES -DESCRIPTOR.message_types_by_name["SelectedListContent"] = _SELECTEDLISTCONTENT -DESCRIPTOR.message_types_by_name["CreateListReply"] = _CREATELISTREPLY -DESCRIPTOR.message_types_by_name["ModifyReply"] = _MODIFYREPLY -DESCRIPTOR.message_types_by_name["SubscribeRequest"] = _SUBSCRIBEREQUEST -DESCRIPTOR.message_types_by_name["UnsubscribeRequest"] = _UNSUBSCRIBEREQUEST -DESCRIPTOR.message_types_by_name[ - "PlaylistModificationInfo"] = _PLAYLISTMODIFICATIONINFO -DESCRIPTOR.enum_types_by_name["ListAttributeKind"] = _LISTATTRIBUTEKIND -DESCRIPTOR.enum_types_by_name["ItemAttributeKind"] = _ITEMATTRIBUTEKIND -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Item = _reflection.GeneratedProtocolMessageType( - "Item", - (_message.Message, ), - { - "DESCRIPTOR": _ITEM, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.Item) - }, -) -_sym_db.RegisterMessage(Item) - -MetaItem = _reflection.GeneratedProtocolMessageType( - "MetaItem", - (_message.Message, ), - { - "DESCRIPTOR": _METAITEM, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.MetaItem) - }, -) -_sym_db.RegisterMessage(MetaItem) - -ListItems = _reflection.GeneratedProtocolMessageType( - "ListItems", - (_message.Message, ), - { - "DESCRIPTOR": _LISTITEMS, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.ListItems) - }, -) -_sym_db.RegisterMessage(ListItems) - -FormatListAttribute = _reflection.GeneratedProtocolMessageType( - "FormatListAttribute", - (_message.Message, ), - { - "DESCRIPTOR": _FORMATLISTATTRIBUTE, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.FormatListAttribute) - }, -) -_sym_db.RegisterMessage(FormatListAttribute) - -ListAttributes = _reflection.GeneratedProtocolMessageType( - "ListAttributes", - (_message.Message, ), - { - "DESCRIPTOR": _LISTATTRIBUTES, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.ListAttributes) - }, -) -_sym_db.RegisterMessage(ListAttributes) - -ItemAttributes = _reflection.GeneratedProtocolMessageType( - "ItemAttributes", - (_message.Message, ), - { - "DESCRIPTOR": _ITEMATTRIBUTES, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.ItemAttributes) - }, -) -_sym_db.RegisterMessage(ItemAttributes) - -Add = _reflection.GeneratedProtocolMessageType( - "Add", - (_message.Message, ), - { - "DESCRIPTOR": _ADD, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.Add) - }, -) -_sym_db.RegisterMessage(Add) - -Rem = _reflection.GeneratedProtocolMessageType( - "Rem", - (_message.Message, ), - { - "DESCRIPTOR": _REM, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.Rem) - }, -) -_sym_db.RegisterMessage(Rem) - -Mov = _reflection.GeneratedProtocolMessageType( - "Mov", - (_message.Message, ), - { - "DESCRIPTOR": _MOV, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.Mov) - }, -) -_sym_db.RegisterMessage(Mov) - -ItemAttributesPartialState = _reflection.GeneratedProtocolMessageType( - "ItemAttributesPartialState", - (_message.Message, ), - { - "DESCRIPTOR": _ITEMATTRIBUTESPARTIALSTATE, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.ItemAttributesPartialState) - }, -) -_sym_db.RegisterMessage(ItemAttributesPartialState) - -ListAttributesPartialState = _reflection.GeneratedProtocolMessageType( - "ListAttributesPartialState", - (_message.Message, ), - { - "DESCRIPTOR": _LISTATTRIBUTESPARTIALSTATE, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.ListAttributesPartialState) - }, -) -_sym_db.RegisterMessage(ListAttributesPartialState) - -UpdateItemAttributes = _reflection.GeneratedProtocolMessageType( - "UpdateItemAttributes", - (_message.Message, ), - { - "DESCRIPTOR": _UPDATEITEMATTRIBUTES, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.UpdateItemAttributes) - }, -) -_sym_db.RegisterMessage(UpdateItemAttributes) - -UpdateListAttributes = _reflection.GeneratedProtocolMessageType( - "UpdateListAttributes", - (_message.Message, ), - { - "DESCRIPTOR": _UPDATELISTATTRIBUTES, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.UpdateListAttributes) - }, -) -_sym_db.RegisterMessage(UpdateListAttributes) - -Op = _reflection.GeneratedProtocolMessageType( - "Op", - (_message.Message, ), - { - "DESCRIPTOR": _OP, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.Op) - }, -) -_sym_db.RegisterMessage(Op) - -OpList = _reflection.GeneratedProtocolMessageType( - "OpList", - (_message.Message, ), - { - "DESCRIPTOR": _OPLIST, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.OpList) - }, -) -_sym_db.RegisterMessage(OpList) - -ChangeInfo = _reflection.GeneratedProtocolMessageType( - "ChangeInfo", - (_message.Message, ), - { - "DESCRIPTOR": _CHANGEINFO, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.ChangeInfo) - }, -) -_sym_db.RegisterMessage(ChangeInfo) - -SourceInfo = _reflection.GeneratedProtocolMessageType( - "SourceInfo", - (_message.Message, ), - { - "DESCRIPTOR": _SOURCEINFO, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.SourceInfo) - }, -) -_sym_db.RegisterMessage(SourceInfo) - -Delta = _reflection.GeneratedProtocolMessageType( - "Delta", - (_message.Message, ), - { - "DESCRIPTOR": _DELTA, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.Delta) - }, -) -_sym_db.RegisterMessage(Delta) - -Diff = _reflection.GeneratedProtocolMessageType( - "Diff", - (_message.Message, ), - { - "DESCRIPTOR": _DIFF, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.Diff) - }, -) -_sym_db.RegisterMessage(Diff) - -ListChanges = _reflection.GeneratedProtocolMessageType( - "ListChanges", - (_message.Message, ), - { - "DESCRIPTOR": _LISTCHANGES, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.ListChanges) - }, -) -_sym_db.RegisterMessage(ListChanges) - -SelectedListContent = _reflection.GeneratedProtocolMessageType( - "SelectedListContent", - (_message.Message, ), - { - "DESCRIPTOR": _SELECTEDLISTCONTENT, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.SelectedListContent) - }, -) -_sym_db.RegisterMessage(SelectedListContent) - -CreateListReply = _reflection.GeneratedProtocolMessageType( - "CreateListReply", - (_message.Message, ), - { - "DESCRIPTOR": _CREATELISTREPLY, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.CreateListReply) - }, -) -_sym_db.RegisterMessage(CreateListReply) - -ModifyReply = _reflection.GeneratedProtocolMessageType( - "ModifyReply", - (_message.Message, ), - { - "DESCRIPTOR": _MODIFYREPLY, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.ModifyReply) - }, -) -_sym_db.RegisterMessage(ModifyReply) - -SubscribeRequest = _reflection.GeneratedProtocolMessageType( - "SubscribeRequest", - (_message.Message, ), - { - "DESCRIPTOR": _SUBSCRIBEREQUEST, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.SubscribeRequest) - }, -) -_sym_db.RegisterMessage(SubscribeRequest) - -UnsubscribeRequest = _reflection.GeneratedProtocolMessageType( - "UnsubscribeRequest", - (_message.Message, ), - { - "DESCRIPTOR": _UNSUBSCRIBEREQUEST, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.UnsubscribeRequest) - }, -) -_sym_db.RegisterMessage(UnsubscribeRequest) - -PlaylistModificationInfo = _reflection.GeneratedProtocolMessageType( - "PlaylistModificationInfo", - (_message.Message, ), - { - "DESCRIPTOR": _PLAYLISTMODIFICATIONINFO, - "__module__": "playlist4_external_pb2" - # @@protoc_insertion_point(class_scope:spotify.playlist4.proto.PlaylistModificationInfo) - }, -) -_sym_db.RegisterMessage(PlaylistModificationInfo) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/PlaylistAnnotate3_pb2.py b/librespot/proto/PlaylistAnnotate3_pb2.py deleted file mode 100644 index 265b99b..0000000 --- a/librespot/proto/PlaylistAnnotate3_pb2.py +++ /dev/null @@ -1,460 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: playlist_annotate3.proto -"""Generated protocol buffer code.""" -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.internal import enum_type_wrapper - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="playlist_annotate3.proto", - package="spotify_playlist_annotate3.proto", - syntax="proto2", - serialized_options=b"\n\036com.spotify.playlist_annotate3H\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x18playlist_annotate3.proto\x12 spotify_playlist_annotate3.proto"a\n\x0fTakedownRequest\x12N\n\x12\x61\x62use_report_state\x18\x01 \x01(\x0e\x32\x32.spotify_playlist_annotate3.proto.AbuseReportState"9\n\x0f\x41nnotateRequest\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x11\n\timage_uri\x18\x02 \x01(\t"5\n\x11TranscodedPicture\x12\x13\n\x0btarget_name\x18\x01 \x01(\t\x12\x0b\n\x03uri\x18\x02 \x01(\t"\xf4\x02\n\x12PlaylistAnnotation\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x0f\n\x07picture\x18\x02 \x01(\t\x12i\n\x1a\x64\x65precated_render_features\x18\x03 \x01(\x0e\x32\x30.spotify_playlist_annotate3.proto.RenderFeatures:\x0fNORMAL_FEATURESB\x02\x18\x01\x12O\n\x12transcoded_picture\x18\x04 \x03(\x0b\x32\x33.spotify_playlist_annotate3.proto.TranscodedPicture\x12(\n\x1ais_abuse_reporting_enabled\x18\x06 \x01(\x08:\x04true\x12R\n\x12\x61\x62use_report_state\x18\x07 \x01(\x0e\x32\x32.spotify_playlist_annotate3.proto.AbuseReportState:\x02OK*<\n\x0eRenderFeatures\x12\x13\n\x0fNORMAL_FEATURES\x10\x01\x12\x15\n\x11\x45XTENDED_FEATURES\x10\x02**\n\x10\x41\x62useReportState\x12\x06\n\x02OK\x10\x00\x12\x0e\n\nTAKEN_DOWN\x10\x01\x42"\n\x1e\x63om.spotify.playlist_annotate3H\x02', -) - -_RENDERFEATURES = _descriptor.EnumDescriptor( - name="RenderFeatures", - full_name="spotify_playlist_annotate3.proto.RenderFeatures", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="NORMAL_FEATURES", - index=0, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="EXTENDED_FEATURES", - index=1, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=650, - serialized_end=710, -) -_sym_db.RegisterEnumDescriptor(_RENDERFEATURES) - -RenderFeatures = enum_type_wrapper.EnumTypeWrapper(_RENDERFEATURES) -_ABUSEREPORTSTATE = _descriptor.EnumDescriptor( - name="AbuseReportState", - full_name="spotify_playlist_annotate3.proto.AbuseReportState", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="OK", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="TAKEN_DOWN", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=712, - serialized_end=754, -) -_sym_db.RegisterEnumDescriptor(_ABUSEREPORTSTATE) - -AbuseReportState = enum_type_wrapper.EnumTypeWrapper(_ABUSEREPORTSTATE) -NORMAL_FEATURES = 1 -EXTENDED_FEATURES = 2 -OK = 0 -TAKEN_DOWN = 1 - -_TAKEDOWNREQUEST = _descriptor.Descriptor( - name="TakedownRequest", - full_name="spotify_playlist_annotate3.proto.TakedownRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="abuse_report_state", - full_name= - "spotify_playlist_annotate3.proto.TakedownRequest.abuse_report_state", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=62, - serialized_end=159, -) - -_ANNOTATEREQUEST = _descriptor.Descriptor( - name="AnnotateRequest", - full_name="spotify_playlist_annotate3.proto.AnnotateRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="description", - full_name= - "spotify_playlist_annotate3.proto.AnnotateRequest.description", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="image_uri", - full_name= - "spotify_playlist_annotate3.proto.AnnotateRequest.image_uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=161, - serialized_end=218, -) - -_TRANSCODEDPICTURE = _descriptor.Descriptor( - name="TranscodedPicture", - full_name="spotify_playlist_annotate3.proto.TranscodedPicture", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="target_name", - full_name= - "spotify_playlist_annotate3.proto.TranscodedPicture.target_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="uri", - full_name="spotify_playlist_annotate3.proto.TranscodedPicture.uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=220, - serialized_end=273, -) - -_PLAYLISTANNOTATION = _descriptor.Descriptor( - name="PlaylistAnnotation", - full_name="spotify_playlist_annotate3.proto.PlaylistAnnotation", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="description", - full_name= - "spotify_playlist_annotate3.proto.PlaylistAnnotation.description", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="picture", - full_name= - "spotify_playlist_annotate3.proto.PlaylistAnnotation.picture", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="deprecated_render_features", - full_name= - "spotify_playlist_annotate3.proto.PlaylistAnnotation.deprecated_render_features", - index=2, - number=3, - type=14, - cpp_type=8, - label=1, - has_default_value=True, - default_value=1, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="transcoded_picture", - full_name= - "spotify_playlist_annotate3.proto.PlaylistAnnotation.transcoded_picture", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="is_abuse_reporting_enabled", - full_name= - "spotify_playlist_annotate3.proto.PlaylistAnnotation.is_abuse_reporting_enabled", - index=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="abuse_report_state", - full_name= - "spotify_playlist_annotate3.proto.PlaylistAnnotation.abuse_report_state", - index=5, - number=7, - type=14, - cpp_type=8, - label=1, - has_default_value=True, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=276, - serialized_end=648, -) - -_TAKEDOWNREQUEST.fields_by_name[ - "abuse_report_state"].enum_type = _ABUSEREPORTSTATE -_PLAYLISTANNOTATION.fields_by_name[ - "deprecated_render_features"].enum_type = _RENDERFEATURES -_PLAYLISTANNOTATION.fields_by_name[ - "transcoded_picture"].message_type = _TRANSCODEDPICTURE -_PLAYLISTANNOTATION.fields_by_name[ - "abuse_report_state"].enum_type = _ABUSEREPORTSTATE -DESCRIPTOR.message_types_by_name["TakedownRequest"] = _TAKEDOWNREQUEST -DESCRIPTOR.message_types_by_name["AnnotateRequest"] = _ANNOTATEREQUEST -DESCRIPTOR.message_types_by_name["TranscodedPicture"] = _TRANSCODEDPICTURE -DESCRIPTOR.message_types_by_name["PlaylistAnnotation"] = _PLAYLISTANNOTATION -DESCRIPTOR.enum_types_by_name["RenderFeatures"] = _RENDERFEATURES -DESCRIPTOR.enum_types_by_name["AbuseReportState"] = _ABUSEREPORTSTATE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -TakedownRequest = _reflection.GeneratedProtocolMessageType( - "TakedownRequest", - (_message.Message, ), - { - "DESCRIPTOR": _TAKEDOWNREQUEST, - "__module__": "playlist_annotate3_pb2" - # @@protoc_insertion_point(class_scope:spotify_playlist_annotate3.proto.TakedownRequest) - }, -) -_sym_db.RegisterMessage(TakedownRequest) - -AnnotateRequest = _reflection.GeneratedProtocolMessageType( - "AnnotateRequest", - (_message.Message, ), - { - "DESCRIPTOR": _ANNOTATEREQUEST, - "__module__": "playlist_annotate3_pb2" - # @@protoc_insertion_point(class_scope:spotify_playlist_annotate3.proto.AnnotateRequest) - }, -) -_sym_db.RegisterMessage(AnnotateRequest) - -TranscodedPicture = _reflection.GeneratedProtocolMessageType( - "TranscodedPicture", - (_message.Message, ), - { - "DESCRIPTOR": _TRANSCODEDPICTURE, - "__module__": "playlist_annotate3_pb2" - # @@protoc_insertion_point(class_scope:spotify_playlist_annotate3.proto.TranscodedPicture) - }, -) -_sym_db.RegisterMessage(TranscodedPicture) - -PlaylistAnnotation = _reflection.GeneratedProtocolMessageType( - "PlaylistAnnotation", - (_message.Message, ), - { - "DESCRIPTOR": _PLAYLISTANNOTATION, - "__module__": "playlist_annotate3_pb2" - # @@protoc_insertion_point(class_scope:spotify_playlist_annotate3.proto.PlaylistAnnotation) - }, -) -_sym_db.RegisterMessage(PlaylistAnnotation) - -DESCRIPTOR._options = None -_PLAYLISTANNOTATION.fields_by_name[ - "deprecated_render_features"]._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Pubsub_pb2.py b/librespot/proto/Pubsub_pb2.py deleted file mode 100644 index abe1b3e..0000000 --- a/librespot/proto/Pubsub_pb2.py +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: pubsub.proto -"""Generated protocol buffer code.""" -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 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name='pubsub.proto', - package='spotify', - syntax='proto2', - serialized_options=b'\n\013com.spotify', - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x0cpubsub.proto\x12\x07spotify\"@\n\x0cSubscription\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x0e\n\x06\x65xpiry\x18\x02 \x01(\x05\x12\x13\n\x0bstatus_code\x18\x03 \x01(\x05\x42\r\n\x0b\x63om.spotify' -) - -_SUBSCRIPTION = _descriptor.Descriptor( - name='Subscription', - full_name='spotify.Subscription', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uri', - full_name='spotify.Subscription.uri', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='expiry', - full_name='spotify.Subscription.expiry', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='status_code', - full_name='spotify.Subscription.status_code', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=25, - serialized_end=89, -) - -DESCRIPTOR.message_types_by_name['Subscription'] = _SUBSCRIPTION -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Subscription = _reflection.GeneratedProtocolMessageType( - 'Subscription', - (_message.Message, ), - { - 'DESCRIPTOR': _SUBSCRIPTION, - '__module__': 'pubsub_pb2' - # @@protoc_insertion_point(class_scope:spotify.Subscription) - }) -_sym_db.RegisterMessage(Subscription) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Queue_pb2.py b/librespot/proto/Queue_pb2.py deleted file mode 100644 index 0abb762..0000000 --- a/librespot/proto/Queue_pb2.py +++ /dev/null @@ -1,104 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: queue.proto -"""Generated protocol buffer code.""" -import ContextTrack_pb2 as context__track__pb2 -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="queue.proto", - package="spotify.player.proto.transfer", - syntax="proto2", - serialized_options=b"\n\024com.spotify.transferH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x0bqueue.proto\x12\x1dspotify.player.proto.transfer\x1a\x13\x63ontext_track.proto"U\n\x05Queue\x12\x32\n\x06tracks\x18\x01 \x03(\x0b\x32".spotify.player.proto.ContextTrack\x12\x18\n\x10is_playing_queue\x18\x02 \x01(\x08\x42\x18\n\x14\x63om.spotify.transferH\x02', - dependencies=[ - context__track__pb2.DESCRIPTOR, - ], -) - -_QUEUE = _descriptor.Descriptor( - name="Queue", - full_name="spotify.player.proto.transfer.Queue", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="tracks", - full_name="spotify.player.proto.transfer.Queue.tracks", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="is_playing_queue", - full_name="spotify.player.proto.transfer.Queue.is_playing_queue", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=67, - serialized_end=152, -) - -_QUEUE.fields_by_name[ - "tracks"].message_type = context__track__pb2._CONTEXTTRACK -DESCRIPTOR.message_types_by_name["Queue"] = _QUEUE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Queue = _reflection.GeneratedProtocolMessageType( - "Queue", - (_message.Message, ), - { - "DESCRIPTOR": _QUEUE, - "__module__": "queue_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.transfer.Queue) - }, -) -_sym_db.RegisterMessage(Queue) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Restrictions_pb2.py b/librespot/proto/Restrictions_pb2.py deleted file mode 100644 index 489e934..0000000 --- a/librespot/proto/Restrictions_pb2.py +++ /dev/null @@ -1,480 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: restrictions.proto -"""Generated protocol buffer code.""" -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="restrictions.proto", - package="spotify.player.proto", - syntax="proto2", - serialized_options=b"\n\023com.spotify.contextH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x12restrictions.proto\x12\x14spotify.player.proto"\xbb\x07\n\x0cRestrictions\x12 \n\x18\x64isallow_pausing_reasons\x18\x01 \x03(\t\x12!\n\x19\x64isallow_resuming_reasons\x18\x02 \x03(\t\x12 \n\x18\x64isallow_seeking_reasons\x18\x03 \x03(\t\x12%\n\x1d\x64isallow_peeking_prev_reasons\x18\x04 \x03(\t\x12%\n\x1d\x64isallow_peeking_next_reasons\x18\x05 \x03(\t\x12&\n\x1e\x64isallow_skipping_prev_reasons\x18\x06 \x03(\t\x12&\n\x1e\x64isallow_skipping_next_reasons\x18\x07 \x03(\t\x12\x30\n(disallow_toggling_repeat_context_reasons\x18\x08 \x03(\t\x12.\n&disallow_toggling_repeat_track_reasons\x18\t \x03(\t\x12)\n!disallow_toggling_shuffle_reasons\x18\n \x03(\t\x12"\n\x1a\x64isallow_set_queue_reasons\x18\x0b \x03(\t\x12.\n&disallow_interrupting_playback_reasons\x18\x0c \x03(\t\x12.\n&disallow_transferring_playback_reasons\x18\r \x03(\t\x12\'\n\x1f\x64isallow_remote_control_reasons\x18\x0e \x03(\t\x12\x33\n+disallow_inserting_into_next_tracks_reasons\x18\x0f \x03(\t\x12\x36\n.disallow_inserting_into_context_tracks_reasons\x18\x10 \x03(\t\x12\x32\n*disallow_reordering_in_next_tracks_reasons\x18\x11 \x03(\t\x12\x35\n-disallow_reordering_in_context_tracks_reasons\x18\x12 \x03(\t\x12\x32\n*disallow_removing_from_next_tracks_reasons\x18\x13 \x03(\t\x12\x35\n-disallow_removing_from_context_tracks_reasons\x18\x14 \x03(\t\x12)\n!disallow_updating_context_reasons\x18\x15 \x03(\tB\x17\n\x13\x63om.spotify.contextH\x02', -) - -_RESTRICTIONS = _descriptor.Descriptor( - name="Restrictions", - full_name="spotify.player.proto.Restrictions", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="disallow_pausing_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_pausing_reasons", - index=0, - number=1, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_resuming_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_resuming_reasons", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_seeking_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_seeking_reasons", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_peeking_prev_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_peeking_prev_reasons", - index=3, - number=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_peeking_next_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_peeking_next_reasons", - index=4, - number=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_skipping_prev_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_skipping_prev_reasons", - index=5, - number=6, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_skipping_next_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_skipping_next_reasons", - index=6, - number=7, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_toggling_repeat_context_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_toggling_repeat_context_reasons", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_toggling_repeat_track_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_toggling_repeat_track_reasons", - index=8, - number=9, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_toggling_shuffle_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_toggling_shuffle_reasons", - index=9, - number=10, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_set_queue_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_set_queue_reasons", - index=10, - number=11, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_interrupting_playback_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_interrupting_playback_reasons", - index=11, - number=12, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_transferring_playback_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_transferring_playback_reasons", - index=12, - number=13, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_remote_control_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_remote_control_reasons", - index=13, - number=14, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_inserting_into_next_tracks_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_inserting_into_next_tracks_reasons", - index=14, - number=15, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_inserting_into_context_tracks_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_inserting_into_context_tracks_reasons", - index=15, - number=16, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_reordering_in_next_tracks_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_reordering_in_next_tracks_reasons", - index=16, - number=17, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_reordering_in_context_tracks_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_reordering_in_context_tracks_reasons", - index=17, - number=18, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_removing_from_next_tracks_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_removing_from_next_tracks_reasons", - index=18, - number=19, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_removing_from_context_tracks_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_removing_from_context_tracks_reasons", - index=19, - number=20, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disallow_updating_context_reasons", - full_name= - "spotify.player.proto.Restrictions.disallow_updating_context_reasons", - index=20, - number=21, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=45, - serialized_end=1000, -) - -DESCRIPTOR.message_types_by_name["Restrictions"] = _RESTRICTIONS -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Restrictions = _reflection.GeneratedProtocolMessageType( - "Restrictions", - (_message.Message, ), - { - "DESCRIPTOR": _RESTRICTIONS, - "__module__": "restrictions_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.Restrictions) - }, -) -_sym_db.RegisterMessage(Restrictions) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/Session_pb2.py b/librespot/proto/Session_pb2.py deleted file mode 100644 index 9214092..0000000 --- a/librespot/proto/Session_pb2.py +++ /dev/null @@ -1,149 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: session.proto -"""Generated protocol buffer code.""" -import Context_pb2 as context__pb2 -import ContextPlayerOptions_pb2 as context__player__options__pb2 -import PlayOrigin_pb2 as play__origin__pb2 -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="session.proto", - package="spotify.player.proto.transfer", - syntax="proto2", - serialized_options=b"\n\024com.spotify.transferH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\rsession.proto\x12\x1dspotify.player.proto.transfer\x1a\rcontext.proto\x1a\x1c\x63ontext_player_options.proto\x1a\x11play_origin.proto"\xd3\x01\n\x07Session\x12\x35\n\x0bplay_origin\x18\x01 \x01(\x0b\x32 .spotify.player.proto.PlayOrigin\x12.\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x1d.spotify.player.proto.Context\x12\x13\n\x0b\x63urrent_uid\x18\x03 \x01(\t\x12L\n\x10option_overrides\x18\x04 \x01(\x0b\x32\x32.spotify.player.proto.ContextPlayerOptionOverridesB\x18\n\x14\x63om.spotify.transferH\x02', - dependencies=[ - context__pb2.DESCRIPTOR, - context__player__options__pb2.DESCRIPTOR, - play__origin__pb2.DESCRIPTOR, - ], -) - -_SESSION = _descriptor.Descriptor( - name="Session", - full_name="spotify.player.proto.transfer.Session", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="play_origin", - full_name="spotify.player.proto.transfer.Session.play_origin", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="context", - full_name="spotify.player.proto.transfer.Session.context", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="current_uid", - full_name="spotify.player.proto.transfer.Session.current_uid", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="option_overrides", - full_name="spotify.player.proto.transfer.Session.option_overrides", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=113, - serialized_end=324, -) - -_SESSION.fields_by_name[ - "play_origin"].message_type = play__origin__pb2._PLAYORIGIN -_SESSION.fields_by_name["context"].message_type = context__pb2._CONTEXT -_SESSION.fields_by_name[ - "option_overrides"].message_type = context__player__options__pb2._CONTEXTPLAYEROPTIONOVERRIDES -DESCRIPTOR.message_types_by_name["Session"] = _SESSION -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Session = _reflection.GeneratedProtocolMessageType( - "Session", - (_message.Message, ), - { - "DESCRIPTOR": _SESSION, - "__module__": "session_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.transfer.Session) - }, -) -_sym_db.RegisterMessage(Session) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/StorageResolve_pb2.py b/librespot/proto/StorageResolve_pb2.py deleted file mode 100644 index 3319832..0000000 --- a/librespot/proto/StorageResolve_pb2.py +++ /dev/null @@ -1,154 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: storage-resolve.proto -"""Generated protocol buffer code.""" -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 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name='storage-resolve.proto', - package='spotify.download.proto', - syntax='proto3', - serialized_options=b'\n\023com.spotify.storageH\002', - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x15storage-resolve.proto\x12\x16spotify.download.proto\"\xaf\x01\n\x16StorageResolveResponse\x12\x45\n\x06result\x18\x01 \x01(\x0e\x32\x35.spotify.download.proto.StorageResolveResponse.Result\x12\x0e\n\x06\x63\x64nurl\x18\x02 \x03(\t\x12\x0e\n\x06\x66ileid\x18\x04 \x01(\x0c\".\n\x06Result\x12\x07\n\x03\x43\x44N\x10\x00\x12\x0b\n\x07STORAGE\x10\x01\x12\x0e\n\nRESTRICTED\x10\x03\x42\x17\n\x13\x63om.spotify.storageH\x02\x62\x06proto3' -) - -_STORAGERESOLVERESPONSE_RESULT = _descriptor.EnumDescriptor( - name='Result', - full_name='spotify.download.proto.StorageResolveResponse.Result', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='CDN', - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='STORAGE', - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='RESTRICTED', - index=2, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=179, - serialized_end=225, -) -_sym_db.RegisterEnumDescriptor(_STORAGERESOLVERESPONSE_RESULT) - -_STORAGERESOLVERESPONSE = _descriptor.Descriptor( - name='StorageResolveResponse', - full_name='spotify.download.proto.StorageResolveResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', - full_name='spotify.download.proto.StorageResolveResponse.result', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cdnurl', - full_name='spotify.download.proto.StorageResolveResponse.cdnurl', - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fileid', - full_name='spotify.download.proto.StorageResolveResponse.fileid', - index=2, - number=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key), - ], - extensions=[], - nested_types=[], - enum_types=[ - _STORAGERESOLVERESPONSE_RESULT, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[], - serialized_start=50, - serialized_end=225, -) - -_STORAGERESOLVERESPONSE.fields_by_name[ - 'result'].enum_type = _STORAGERESOLVERESPONSE_RESULT -_STORAGERESOLVERESPONSE_RESULT.containing_type = _STORAGERESOLVERESPONSE -DESCRIPTOR.message_types_by_name[ - 'StorageResolveResponse'] = _STORAGERESOLVERESPONSE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -StorageResolveResponse = _reflection.GeneratedProtocolMessageType( - 'StorageResolveResponse', - (_message.Message, ), - { - 'DESCRIPTOR': _STORAGERESOLVERESPONSE, - '__module__': 'storage_resolve_pb2' - # @@protoc_insertion_point(class_scope:spotify.download.proto.StorageResolveResponse) - }) -_sym_db.RegisterMessage(StorageResolveResponse) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/TransferState_pb2.py b/librespot/proto/TransferState_pb2.py deleted file mode 100644 index 1db7786..0000000 --- a/librespot/proto/TransferState_pb2.py +++ /dev/null @@ -1,174 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: transfer_state.proto -"""Generated protocol buffer code.""" -import ContextPlayerOptions_pb2 as context__player__options__pb2 -import Playback_pb2 as playback__pb2 -import Queue_pb2 as queue__pb2 -import Session_pb2 as session__pb2 -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="transfer_state.proto", - package="spotify.player.proto.transfer", - syntax="proto2", - serialized_options=b"\n\024com.spotify.transferH\002", - create_key=_descriptor._internal_create_key, - serialized_pb= - b"\n\x14transfer_state.proto\x12\x1dspotify.player.proto.transfer\x1a\x1c\x63ontext_player_options.proto\x1a\x0eplayback.proto\x1a\rsession.proto\x1a\x0bqueue.proto\"\x99\x02\n\rTransferState\x12;\n\x07options\x18\x01 \x01(\x0b\x32*.spotify.player.proto.ContextPlayerOptions\x12\x39\n\x08playback\x18\x02 \x01(\x0b\x32'.spotify.player.proto.transfer.Playback\x12?\n\x0f\x63urrent_session\x18\x03 \x01(\x0b\x32&.spotify.player.proto.transfer.Session\x12\x33\n\x05queue\x18\x04 \x01(\x0b\x32$.spotify.player.proto.transfer.Queue\x12\x1a\n\x12\x63reation_timestamp\x18\x05 \x01(\x03\x42\x18\n\x14\x63om.spotify.transferH\x02", - dependencies=[ - context__player__options__pb2.DESCRIPTOR, - playback__pb2.DESCRIPTOR, - session__pb2.DESCRIPTOR, - queue__pb2.DESCRIPTOR, - ], -) - -_TRANSFERSTATE = _descriptor.Descriptor( - name="TransferState", - full_name="spotify.player.proto.transfer.TransferState", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="options", - full_name="spotify.player.proto.transfer.TransferState.options", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="playback", - full_name="spotify.player.proto.transfer.TransferState.playback", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="current_session", - full_name= - "spotify.player.proto.transfer.TransferState.current_session", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="queue", - full_name="spotify.player.proto.transfer.TransferState.queue", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="creation_timestamp", - full_name= - "spotify.player.proto.transfer.TransferState.creation_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=130, - serialized_end=411, -) - -_TRANSFERSTATE.fields_by_name[ - "options"].message_type = context__player__options__pb2._CONTEXTPLAYEROPTIONS -_TRANSFERSTATE.fields_by_name[ - "playback"].message_type = playback__pb2._PLAYBACK -_TRANSFERSTATE.fields_by_name[ - "current_session"].message_type = session__pb2._SESSION -_TRANSFERSTATE.fields_by_name["queue"].message_type = queue__pb2._QUEUE -DESCRIPTOR.message_types_by_name["TransferState"] = _TRANSFERSTATE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -TransferState = _reflection.GeneratedProtocolMessageType( - "TransferState", - (_message.Message, ), - { - "DESCRIPTOR": _TRANSFERSTATE, - "__module__": "transfer_state_pb2" - # @@protoc_insertion_point(class_scope:spotify.player.proto.transfer.TransferState) - }, -) -_sym_db.RegisterMessage(TransferState) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/__init__.py b/librespot/proto/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/librespot/proto/__pycache__/Authentication_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Authentication_pb2.cpython-312.pyc deleted file mode 100644 index c2a0134..0000000 Binary files a/librespot/proto/__pycache__/Authentication_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/CanvazMeta_pb2.cpython-312.pyc b/librespot/proto/__pycache__/CanvazMeta_pb2.cpython-312.pyc deleted file mode 100644 index d7b8246..0000000 Binary files a/librespot/proto/__pycache__/CanvazMeta_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Canvaz_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Canvaz_pb2.cpython-312.pyc deleted file mode 100644 index 9dfcc05..0000000 Binary files a/librespot/proto/__pycache__/Canvaz_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/ClientToken_pb2.cpython-312.pyc b/librespot/proto/__pycache__/ClientToken_pb2.cpython-312.pyc deleted file mode 100644 index f13a7e4..0000000 Binary files a/librespot/proto/__pycache__/ClientToken_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Connect_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Connect_pb2.cpython-312.pyc deleted file mode 100644 index f34dfa0..0000000 Binary files a/librespot/proto/__pycache__/Connect_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Connectivity_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Connectivity_pb2.cpython-312.pyc deleted file mode 100644 index 5fb02f2..0000000 Binary files a/librespot/proto/__pycache__/Connectivity_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/ContextPage_pb2.cpython-312.pyc b/librespot/proto/__pycache__/ContextPage_pb2.cpython-312.pyc deleted file mode 100644 index 278ff64..0000000 Binary files a/librespot/proto/__pycache__/ContextPage_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/ContextPlayerOptions_pb2.cpython-312.pyc b/librespot/proto/__pycache__/ContextPlayerOptions_pb2.cpython-312.pyc deleted file mode 100644 index 6cecfd6..0000000 Binary files a/librespot/proto/__pycache__/ContextPlayerOptions_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/ContextTrack_pb2.cpython-312.pyc b/librespot/proto/__pycache__/ContextTrack_pb2.cpython-312.pyc deleted file mode 100644 index 6b75321..0000000 Binary files a/librespot/proto/__pycache__/ContextTrack_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Context_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Context_pb2.cpython-312.pyc deleted file mode 100644 index c7d7f0c..0000000 Binary files a/librespot/proto/__pycache__/Context_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/ExplicitContentPubsub_pb2.cpython-312.pyc b/librespot/proto/__pycache__/ExplicitContentPubsub_pb2.cpython-312.pyc deleted file mode 100644 index f028623..0000000 Binary files a/librespot/proto/__pycache__/ExplicitContentPubsub_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Keyexchange_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Keyexchange_pb2.cpython-312.pyc deleted file mode 100644 index 78e9c45..0000000 Binary files a/librespot/proto/__pycache__/Keyexchange_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Mercury_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Mercury_pb2.cpython-312.pyc deleted file mode 100644 index 727219a..0000000 Binary files a/librespot/proto/__pycache__/Mercury_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Metadata_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Metadata_pb2.cpython-312.pyc deleted file mode 100644 index c20d66d..0000000 Binary files a/librespot/proto/__pycache__/Metadata_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/PlayOrigin_pb2.cpython-312.pyc b/librespot/proto/__pycache__/PlayOrigin_pb2.cpython-312.pyc deleted file mode 100644 index 360c666..0000000 Binary files a/librespot/proto/__pycache__/PlayOrigin_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Playback_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Playback_pb2.cpython-312.pyc deleted file mode 100644 index 16bb6e0..0000000 Binary files a/librespot/proto/__pycache__/Playback_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Player_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Player_pb2.cpython-312.pyc deleted file mode 100644 index b1af173..0000000 Binary files a/librespot/proto/__pycache__/Player_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Playlist4External_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Playlist4External_pb2.cpython-312.pyc deleted file mode 100644 index f7ffdbb..0000000 Binary files a/librespot/proto/__pycache__/Playlist4External_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/PlaylistAnnotate3_pb2.cpython-312.pyc b/librespot/proto/__pycache__/PlaylistAnnotate3_pb2.cpython-312.pyc deleted file mode 100644 index 76de978..0000000 Binary files a/librespot/proto/__pycache__/PlaylistAnnotate3_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Pubsub_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Pubsub_pb2.cpython-312.pyc deleted file mode 100644 index 71e193e..0000000 Binary files a/librespot/proto/__pycache__/Pubsub_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Queue_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Queue_pb2.cpython-312.pyc deleted file mode 100644 index 7582164..0000000 Binary files a/librespot/proto/__pycache__/Queue_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Restrictions_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Restrictions_pb2.cpython-312.pyc deleted file mode 100644 index b139ff1..0000000 Binary files a/librespot/proto/__pycache__/Restrictions_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/Session_pb2.cpython-312.pyc b/librespot/proto/__pycache__/Session_pb2.cpython-312.pyc deleted file mode 100644 index 1f715af..0000000 Binary files a/librespot/proto/__pycache__/Session_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/StorageResolve_pb2.cpython-312.pyc b/librespot/proto/__pycache__/StorageResolve_pb2.cpython-312.pyc deleted file mode 100644 index cc3d4c2..0000000 Binary files a/librespot/proto/__pycache__/StorageResolve_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/TransferState_pb2.cpython-312.pyc b/librespot/proto/__pycache__/TransferState_pb2.cpython-312.pyc deleted file mode 100644 index 3559a7c..0000000 Binary files a/librespot/proto/__pycache__/TransferState_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/__pycache__/__init__.cpython-312.pyc b/librespot/proto/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index ab367f3..0000000 Binary files a/librespot/proto/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/__init__.py b/librespot/proto/spotify/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/librespot/proto/spotify/__pycache__/__init__.cpython-312.pyc b/librespot/proto/spotify/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index dda7669..0000000 Binary files a/librespot/proto/spotify/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/__init__.py b/librespot/proto/spotify/login5/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/librespot/proto/spotify/login5/__pycache__/__init__.cpython-312.pyc b/librespot/proto/spotify/login5/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 5f57b58..0000000 Binary files a/librespot/proto/spotify/login5/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/ClientInfo_pb2.py b/librespot/proto/spotify/login5/v3/ClientInfo_pb2.py deleted file mode 100644 index 81fc083..0000000 --- a/librespot/proto/spotify/login5/v3/ClientInfo_pb2.py +++ /dev/null @@ -1,98 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: spotify/login5/v3/client_info.proto -"""Generated protocol buffer code.""" -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="spotify/login5/v3/client_info.proto", - package="spotify.login5.v3", - syntax="proto3", - serialized_options=b"\n\024com.spotify.login5v3", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n#spotify/login5/v3/client_info.proto\x12\x11spotify.login5.v3"2\n\nClientInfo\x12\x11\n\tclient_id\x18\x01 \x01(\t\x12\x11\n\tdevice_id\x18\x02 \x01(\tB\x16\n\x14\x63om.spotify.login5v3b\x06proto3', -) - -_CLIENTINFO = _descriptor.Descriptor( - name="ClientInfo", - full_name="spotify.login5.v3.ClientInfo", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="client_id", - full_name="spotify.login5.v3.ClientInfo.client_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="device_id", - full_name="spotify.login5.v3.ClientInfo.device_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=58, - serialized_end=108, -) - -DESCRIPTOR.message_types_by_name["ClientInfo"] = _CLIENTINFO -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -ClientInfo = _reflection.GeneratedProtocolMessageType( - "ClientInfo", - (_message.Message, ), - { - "DESCRIPTOR": _CLIENTINFO, - "__module__": "spotify.login5.v3.client_info_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.ClientInfo) - }, -) -_sym_db.RegisterMessage(ClientInfo) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/spotify/login5/v3/Login5_pb2.py b/librespot/proto/spotify/login5/v3/Login5_pb2.py deleted file mode 100644 index 6fed2a6..0000000 --- a/librespot/proto/spotify/login5/v3/Login5_pb2.py +++ /dev/null @@ -1,972 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: spotify/login5/v3/login5.proto -"""Generated protocol buffer code.""" -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.internal import enum_type_wrapper -from librespot.proto.spotify.login5.v3 import \ - ClientInfo_pb2 as spotify_dot_login5_dot_v3_dot_client__info__pb2 -from librespot.proto.spotify.login5.v3 import \ - UserInfo_pb2 as spotify_dot_login5_dot_v3_dot_user__info__pb2 -from librespot.proto.spotify.login5.v3.challenges import \ - Code_pb2 as spotify_dot_login5_dot_v3_dot_challenges_dot_code__pb2 -from librespot.proto.spotify.login5.v3.challenges import \ - Hashcash_pb2 as spotify_dot_login5_dot_v3_dot_challenges_dot_hashcash__pb2 -from librespot.proto.spotify.login5.v3.credentials import \ - Credentials_pb2 as \ - spotify_dot_login5_dot_v3_dot_credentials_dot_credentials__pb2 -from librespot.proto.spotify.login5.v3.identifiers import \ - Identifiers as \ - spotify_dot_login5_dot_v3_dot_identifiers_dot_identifiers__pb2 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="spotify/login5/v3/login5.proto", - package="spotify.login5.v3", - syntax="proto3", - serialized_options=b"\n\024com.spotify.login5v3", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\x1espotify/login5/v3/login5.proto\x12\x11spotify.login5.v3\x1a#spotify/login5/v3/client_info.proto\x1a!spotify/login5/v3/user_info.proto\x1a\'spotify/login5/v3/challenges/code.proto\x1a+spotify/login5/v3/challenges/hashcash.proto\x1a/spotify/login5/v3/credentials/credentials.proto\x1a/spotify/login5/v3/identifiers/identifiers.proto">\n\nChallenges\x12\x30\n\nchallenges\x18\x01 \x03(\x0b\x32\x1c.spotify.login5.v3.Challenge"\x89\x01\n\tChallenge\x12\x41\n\x08hashcash\x18\x01 \x01(\x0b\x32/.spotify.login5.v3.challenges.HashcashChallenge\x12\x39\n\x04\x63ode\x18\x02 \x01(\x0b\x32+.spotify.login5.v3.challenges.CodeChallenge"M\n\x12\x43hallengeSolutions\x12\x37\n\tsolutions\x18\x01 \x03(\x0b\x32$.spotify.login5.v3.ChallengeSolution"\x8f\x01\n\x11\x43hallengeSolution\x12@\n\x08hashcash\x18\x01 \x01(\x0b\x32..spotify.login5.v3.challenges.HashcashSolution\x12\x38\n\x04\x63ode\x18\x02 \x01(\x0b\x32*.spotify.login5.v3.challenges.CodeSolution"\xad\x05\n\x0cLoginRequest\x12\x32\n\x0b\x63lient_info\x18\x01 \x01(\x0b\x32\x1d.spotify.login5.v3.ClientInfo\x12\x15\n\rlogin_context\x18\x02 \x01(\x0c\x12\x42\n\x13\x63hallenge_solutions\x18\x03 \x01(\x0b\x32%.spotify.login5.v3.ChallengeSolutions\x12J\n\x11stored_credential\x18\x64 \x01(\x0b\x32/.spotify.login5.v3.credentials.StoredCredential\x12\x39\n\x08password\x18\x65 \x01(\x0b\x32\'.spotify.login5.v3.credentials.Password\x12Q\n\x15\x66\x61\x63\x65\x62ook_access_token\x18\x66 \x01(\x0b\x32\x32.spotify.login5.v3.credentials.FacebookAccessToken\x12@\n\x0cphone_number\x18g \x01(\x0b\x32*.spotify.login5.v3.identifiers.PhoneNumber\x12\x43\n\x0eone_time_token\x18h \x01(\x0b\x32+.spotify.login5.v3.credentials.OneTimeToken\x12U\n\x17parent_child_credential\x18i \x01(\x0b\x32\x34.spotify.login5.v3.credentials.ParentChildCredential\x12V\n\x18\x61pple_sign_in_credential\x18j \x01(\x0b\x32\x34.spotify.login5.v3.credentials.AppleSignInCredential"m\n\x07LoginOk\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x14\n\x0c\x61\x63\x63\x65ss_token\x18\x02 \x01(\t\x12\x19\n\x11stored_credential\x18\x03 \x01(\x0c\x12\x1f\n\x17\x61\x63\x63\x65ss_token_expires_in\x18\x04 \x01(\x05"\xf8\x02\n\rLoginResponse\x12&\n\x02ok\x18\x01 \x01(\x0b\x32\x1a.spotify.login5.v3.LoginOk\x12,\n\x05\x65rror\x18\x02 \x01(\x0e\x32\x1d.spotify.login5.v3.LoginError\x12\x31\n\nchallenges\x18\x03 \x01(\x0b\x32\x1d.spotify.login5.v3.Challenges\x12;\n\x08warnings\x18\x04 \x03(\x0e\x32).spotify.login5.v3.LoginResponse.Warnings\x12\x15\n\rlogin_context\x18\x05 \x01(\x0c\x12\x18\n\x10identifier_token\x18\x06 \x01(\t\x12.\n\tuser_info\x18\x07 \x01(\x0b\x32\x1b.spotify.login5.v3.UserInfo"@\n\x08Warnings\x12\x13\n\x0fUNKNOWN_WARNING\x10\x00\x12\x1f\n\x1b\x44\x45PRECATED_PROTOCOL_VERSION\x10\x01*\xd3\x01\n\nLoginError\x12\x11\n\rUNKNOWN_ERROR\x10\x00\x12\x17\n\x13INVALID_CREDENTIALS\x10\x01\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10\x02\x12\x1e\n\x1aUNSUPPORTED_LOGIN_PROTOCOL\x10\x03\x12\x0b\n\x07TIMEOUT\x10\x04\x12\x16\n\x12UNKNOWN_IDENTIFIER\x10\x05\x12\x15\n\x11TOO_MANY_ATTEMPTS\x10\x06\x12\x17\n\x13INVALID_PHONENUMBER\x10\x07\x12\x13\n\x0fTRY_AGAIN_LATER\x10\x08\x42\x16\n\x14\x63om.spotify.login5v3b\x06proto3', - dependencies=[ - spotify_dot_login5_dot_v3_dot_client__info__pb2.DESCRIPTOR, - spotify_dot_login5_dot_v3_dot_user__info__pb2.DESCRIPTOR, - spotify_dot_login5_dot_v3_dot_challenges_dot_code__pb2.DESCRIPTOR, - spotify_dot_login5_dot_v3_dot_challenges_dot_hashcash__pb2.DESCRIPTOR, - spotify_dot_login5_dot_v3_dot_credentials_dot_credentials__pb2. - DESCRIPTOR, - spotify_dot_login5_dot_v3_dot_identifiers_dot_identifiers__pb2. - DESCRIPTOR, - ], -) - -_LOGINERROR = _descriptor.EnumDescriptor( - name="LoginError", - full_name="spotify.login5.v3.LoginError", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="UNKNOWN_ERROR", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INVALID_CREDENTIALS", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="BAD_REQUEST", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UNSUPPORTED_LOGIN_PROTOCOL", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="TIMEOUT", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UNKNOWN_IDENTIFIER", - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="TOO_MANY_ATTEMPTS", - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INVALID_PHONENUMBER", - index=7, - number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="TRY_AGAIN_LATER", - index=8, - number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=1917, - serialized_end=2128, -) -_sym_db.RegisterEnumDescriptor(_LOGINERROR) - -LoginError = enum_type_wrapper.EnumTypeWrapper(_LOGINERROR) -UNKNOWN_ERROR = 0 -INVALID_CREDENTIALS = 1 -BAD_REQUEST = 2 -UNSUPPORTED_LOGIN_PROTOCOL = 3 -TIMEOUT = 4 -UNKNOWN_IDENTIFIER = 5 -TOO_MANY_ATTEMPTS = 6 -INVALID_PHONENUMBER = 7 -TRY_AGAIN_LATER = 8 - -_LOGINRESPONSE_WARNINGS = _descriptor.EnumDescriptor( - name="Warnings", - full_name="spotify.login5.v3.LoginResponse.Warnings", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="UNKNOWN_WARNING", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="DEPRECATED_PROTOCOL_VERSION", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=1850, - serialized_end=1914, -) -_sym_db.RegisterEnumDescriptor(_LOGINRESPONSE_WARNINGS) - -_CHALLENGES = _descriptor.Descriptor( - name="Challenges", - full_name="spotify.login5.v3.Challenges", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="challenges", - full_name="spotify.login5.v3.Challenges.challenges", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=309, - serialized_end=371, -) - -_CHALLENGE = _descriptor.Descriptor( - name="Challenge", - full_name="spotify.login5.v3.Challenge", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="hashcash", - full_name="spotify.login5.v3.Challenge.hashcash", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="code", - full_name="spotify.login5.v3.Challenge.code", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=374, - serialized_end=511, -) - -_CHALLENGESOLUTIONS = _descriptor.Descriptor( - name="ChallengeSolutions", - full_name="spotify.login5.v3.ChallengeSolutions", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="solutions", - full_name="spotify.login5.v3.ChallengeSolutions.solutions", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=513, - serialized_end=590, -) - -_CHALLENGESOLUTION = _descriptor.Descriptor( - name="ChallengeSolution", - full_name="spotify.login5.v3.ChallengeSolution", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="hashcash", - full_name="spotify.login5.v3.ChallengeSolution.hashcash", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="code", - full_name="spotify.login5.v3.ChallengeSolution.code", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=593, - serialized_end=736, -) - -_LOGINREQUEST = _descriptor.Descriptor( - name="LoginRequest", - full_name="spotify.login5.v3.LoginRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="client_info", - full_name="spotify.login5.v3.LoginRequest.client_info", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="login_context", - full_name="spotify.login5.v3.LoginRequest.login_context", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="challenge_solutions", - full_name="spotify.login5.v3.LoginRequest.challenge_solutions", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="stored_credential", - full_name="spotify.login5.v3.LoginRequest.stored_credential", - index=3, - number=100, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="password", - full_name="spotify.login5.v3.LoginRequest.password", - index=4, - number=101, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="facebook_access_token", - full_name="spotify.login5.v3.LoginRequest.facebook_access_token", - index=5, - number=102, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="phone_number", - full_name="spotify.login5.v3.LoginRequest.phone_number", - index=6, - number=103, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="one_time_token", - full_name="spotify.login5.v3.LoginRequest.one_time_token", - index=7, - number=104, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="parent_child_credential", - full_name="spotify.login5.v3.LoginRequest.parent_child_credential", - index=8, - number=105, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="apple_sign_in_credential", - full_name="spotify.login5.v3.LoginRequest.apple_sign_in_credential", - index=9, - number=106, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=739, - serialized_end=1424, -) - -_LOGINOK = _descriptor.Descriptor( - name="LoginOk", - full_name="spotify.login5.v3.LoginOk", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="username", - full_name="spotify.login5.v3.LoginOk.username", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="access_token", - full_name="spotify.login5.v3.LoginOk.access_token", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="stored_credential", - full_name="spotify.login5.v3.LoginOk.stored_credential", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="access_token_expires_in", - full_name="spotify.login5.v3.LoginOk.access_token_expires_in", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1426, - serialized_end=1535, -) - -_LOGINRESPONSE = _descriptor.Descriptor( - name="LoginResponse", - full_name="spotify.login5.v3.LoginResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="ok", - full_name="spotify.login5.v3.LoginResponse.ok", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="error", - full_name="spotify.login5.v3.LoginResponse.error", - index=1, - number=2, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="challenges", - full_name="spotify.login5.v3.LoginResponse.challenges", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="warnings", - full_name="spotify.login5.v3.LoginResponse.warnings", - index=3, - number=4, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="login_context", - full_name="spotify.login5.v3.LoginResponse.login_context", - index=4, - number=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="identifier_token", - full_name="spotify.login5.v3.LoginResponse.identifier_token", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="user_info", - full_name="spotify.login5.v3.LoginResponse.user_info", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[ - _LOGINRESPONSE_WARNINGS, - ], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1538, - serialized_end=1914, -) - -_CHALLENGES.fields_by_name["challenges"].message_type = _CHALLENGE -_CHALLENGE.fields_by_name["hashcash"].message_type = ( - spotify_dot_login5_dot_v3_dot_challenges_dot_hashcash__pb2. - _HASHCASHCHALLENGE) -_CHALLENGE.fields_by_name[ - "code"].message_type = spotify_dot_login5_dot_v3_dot_challenges_dot_code__pb2._CODECHALLENGE -_CHALLENGESOLUTIONS.fields_by_name[ - "solutions"].message_type = _CHALLENGESOLUTION -_CHALLENGESOLUTION.fields_by_name["hashcash"].message_type = ( - spotify_dot_login5_dot_v3_dot_challenges_dot_hashcash__pb2. - _HASHCASHSOLUTION) -_CHALLENGESOLUTION.fields_by_name[ - "code"].message_type = spotify_dot_login5_dot_v3_dot_challenges_dot_code__pb2._CODESOLUTION -_LOGINREQUEST.fields_by_name[ - "client_info"].message_type = spotify_dot_login5_dot_v3_dot_client__info__pb2._CLIENTINFO -_LOGINREQUEST.fields_by_name[ - "challenge_solutions"].message_type = _CHALLENGESOLUTIONS -_LOGINREQUEST.fields_by_name["stored_credential"].message_type = ( - spotify_dot_login5_dot_v3_dot_credentials_dot_credentials__pb2. - _STOREDCREDENTIAL) -_LOGINREQUEST.fields_by_name["password"].message_type = ( - spotify_dot_login5_dot_v3_dot_credentials_dot_credentials__pb2._PASSWORD) -_LOGINREQUEST.fields_by_name["facebook_access_token"].message_type = ( - spotify_dot_login5_dot_v3_dot_credentials_dot_credentials__pb2. - _FACEBOOKACCESSTOKEN) -_LOGINREQUEST.fields_by_name["phone_number"].message_type = ( - spotify_dot_login5_dot_v3_dot_identifiers_dot_identifiers__pb2._PHONENUMBER -) -_LOGINREQUEST.fields_by_name["one_time_token"].message_type = ( - spotify_dot_login5_dot_v3_dot_credentials_dot_credentials__pb2. - _ONETIMETOKEN) -_LOGINREQUEST.fields_by_name["parent_child_credential"].message_type = ( - spotify_dot_login5_dot_v3_dot_credentials_dot_credentials__pb2. - _PARENTCHILDCREDENTIAL) -_LOGINREQUEST.fields_by_name["apple_sign_in_credential"].message_type = ( - spotify_dot_login5_dot_v3_dot_credentials_dot_credentials__pb2. - _APPLESIGNINCREDENTIAL) -_LOGINRESPONSE.fields_by_name["ok"].message_type = _LOGINOK -_LOGINRESPONSE.fields_by_name["error"].enum_type = _LOGINERROR -_LOGINRESPONSE.fields_by_name["challenges"].message_type = _CHALLENGES -_LOGINRESPONSE.fields_by_name["warnings"].enum_type = _LOGINRESPONSE_WARNINGS -_LOGINRESPONSE.fields_by_name[ - "user_info"].message_type = spotify_dot_login5_dot_v3_dot_user__info__pb2._USERINFO -_LOGINRESPONSE_WARNINGS.containing_type = _LOGINRESPONSE -DESCRIPTOR.message_types_by_name["Challenges"] = _CHALLENGES -DESCRIPTOR.message_types_by_name["Challenge"] = _CHALLENGE -DESCRIPTOR.message_types_by_name["ChallengeSolutions"] = _CHALLENGESOLUTIONS -DESCRIPTOR.message_types_by_name["ChallengeSolution"] = _CHALLENGESOLUTION -DESCRIPTOR.message_types_by_name["LoginRequest"] = _LOGINREQUEST -DESCRIPTOR.message_types_by_name["LoginOk"] = _LOGINOK -DESCRIPTOR.message_types_by_name["LoginResponse"] = _LOGINRESPONSE -DESCRIPTOR.enum_types_by_name["LoginError"] = _LOGINERROR -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Challenges = _reflection.GeneratedProtocolMessageType( - "Challenges", - (_message.Message, ), - { - "DESCRIPTOR": _CHALLENGES, - "__module__": "spotify.login5.v3.login5_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.Challenges) - }, -) -_sym_db.RegisterMessage(Challenges) - -Challenge = _reflection.GeneratedProtocolMessageType( - "Challenge", - (_message.Message, ), - { - "DESCRIPTOR": _CHALLENGE, - "__module__": "spotify.login5.v3.login5_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.Challenge) - }, -) -_sym_db.RegisterMessage(Challenge) - -ChallengeSolutions = _reflection.GeneratedProtocolMessageType( - "ChallengeSolutions", - (_message.Message, ), - { - "DESCRIPTOR": _CHALLENGESOLUTIONS, - "__module__": "spotify.login5.v3.login5_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.ChallengeSolutions) - }, -) -_sym_db.RegisterMessage(ChallengeSolutions) - -ChallengeSolution = _reflection.GeneratedProtocolMessageType( - "ChallengeSolution", - (_message.Message, ), - { - "DESCRIPTOR": _CHALLENGESOLUTION, - "__module__": "spotify.login5.v3.login5_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.ChallengeSolution) - }, -) -_sym_db.RegisterMessage(ChallengeSolution) - -LoginRequest = _reflection.GeneratedProtocolMessageType( - "LoginRequest", - (_message.Message, ), - { - "DESCRIPTOR": _LOGINREQUEST, - "__module__": "spotify.login5.v3.login5_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.LoginRequest) - }, -) -_sym_db.RegisterMessage(LoginRequest) - -LoginOk = _reflection.GeneratedProtocolMessageType( - "LoginOk", - (_message.Message, ), - { - "DESCRIPTOR": _LOGINOK, - "__module__": "spotify.login5.v3.login5_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.LoginOk) - }, -) -_sym_db.RegisterMessage(LoginOk) - -LoginResponse = _reflection.GeneratedProtocolMessageType( - "LoginResponse", - (_message.Message, ), - { - "DESCRIPTOR": _LOGINRESPONSE, - "__module__": "spotify.login5.v3.login5_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.LoginResponse) - }, -) -_sym_db.RegisterMessage(LoginResponse) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/spotify/login5/v3/UserInfo_pb2.py b/librespot/proto/spotify/login5/v3/UserInfo_pb2.py deleted file mode 100644 index 99f9235..0000000 --- a/librespot/proto/spotify/login5/v3/UserInfo_pb2.py +++ /dev/null @@ -1,263 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: spotify/login5/v3/user_info.proto -"""Generated protocol buffer code.""" -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="spotify/login5/v3/user_info.proto", - package="spotify.login5.v3", - syntax="proto3", - serialized_options=b"\n\024com.spotify.login5v3", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n!spotify/login5/v3/user_info.proto\x12\x11spotify.login5.v3"\x97\x02\n\x08UserInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x16\n\x0e\x65mail_verified\x18\x03 \x01(\x08\x12\x11\n\tbirthdate\x18\x04 \x01(\t\x12\x32\n\x06gender\x18\x05 \x01(\x0e\x32".spotify.login5.v3.UserInfo.Gender\x12\x14\n\x0cphone_number\x18\x06 \x01(\t\x12\x1d\n\x15phone_number_verified\x18\x07 \x01(\x08\x12 \n\x18\x65mail_already_registered\x18\x08 \x01(\x08"8\n\x06Gender\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04MALE\x10\x01\x12\n\n\x06\x46\x45MALE\x10\x02\x12\x0b\n\x07NEUTRAL\x10\x03\x42\x16\n\x14\x63om.spotify.login5v3b\x06proto3', -) - -_USERINFO_GENDER = _descriptor.EnumDescriptor( - name="Gender", - full_name="spotify.login5.v3.UserInfo.Gender", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="MALE", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FEMALE", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="NEUTRAL", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=280, - serialized_end=336, -) -_sym_db.RegisterEnumDescriptor(_USERINFO_GENDER) - -_USERINFO = _descriptor.Descriptor( - name="UserInfo", - full_name="spotify.login5.v3.UserInfo", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="name", - full_name="spotify.login5.v3.UserInfo.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="email", - full_name="spotify.login5.v3.UserInfo.email", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="email_verified", - full_name="spotify.login5.v3.UserInfo.email_verified", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="birthdate", - full_name="spotify.login5.v3.UserInfo.birthdate", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="gender", - full_name="spotify.login5.v3.UserInfo.gender", - index=4, - number=5, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="phone_number", - full_name="spotify.login5.v3.UserInfo.phone_number", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="phone_number_verified", - full_name="spotify.login5.v3.UserInfo.phone_number_verified", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="email_already_registered", - full_name="spotify.login5.v3.UserInfo.email_already_registered", - index=7, - number=8, - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[ - _USERINFO_GENDER, - ], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=57, - serialized_end=336, -) - -_USERINFO.fields_by_name["gender"].enum_type = _USERINFO_GENDER -_USERINFO_GENDER.containing_type = _USERINFO -DESCRIPTOR.message_types_by_name["UserInfo"] = _USERINFO -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -UserInfo = _reflection.GeneratedProtocolMessageType( - "UserInfo", - (_message.Message, ), - { - "DESCRIPTOR": _USERINFO, - "__module__": "spotify.login5.v3.user_info_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.UserInfo) - }, -) -_sym_db.RegisterMessage(UserInfo) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/spotify/login5/v3/__init__.py b/librespot/proto/spotify/login5/v3/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/librespot/proto/spotify/login5/v3/__pycache__/ClientInfo_pb2.cpython-312.pyc b/librespot/proto/spotify/login5/v3/__pycache__/ClientInfo_pb2.cpython-312.pyc deleted file mode 100644 index 4625346..0000000 Binary files a/librespot/proto/spotify/login5/v3/__pycache__/ClientInfo_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/__pycache__/Login5_pb2.cpython-312.pyc b/librespot/proto/spotify/login5/v3/__pycache__/Login5_pb2.cpython-312.pyc deleted file mode 100644 index 0648a1a..0000000 Binary files a/librespot/proto/spotify/login5/v3/__pycache__/Login5_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/__pycache__/UserInfo_pb2.cpython-312.pyc b/librespot/proto/spotify/login5/v3/__pycache__/UserInfo_pb2.cpython-312.pyc deleted file mode 100644 index db93518..0000000 Binary files a/librespot/proto/spotify/login5/v3/__pycache__/UserInfo_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/__pycache__/__init__.cpython-312.pyc b/librespot/proto/spotify/login5/v3/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 1b76fee..0000000 Binary files a/librespot/proto/spotify/login5/v3/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/challenges/Code_pb2.py b/librespot/proto/spotify/login5/v3/challenges/Code_pb2.py deleted file mode 100644 index 03dca14..0000000 --- a/librespot/proto/spotify/login5/v3/challenges/Code_pb2.py +++ /dev/null @@ -1,224 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: spotify/login5/v3/challenges/code.proto -"""Generated protocol buffer code.""" -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="spotify/login5/v3/challenges/code.proto", - package="spotify.login5.v3.challenges", - syntax="proto3", - serialized_options=b"\n\024com.spotify.login5v3", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n\'spotify/login5/v3/challenges/code.proto\x12\x1cspotify.login5.v3.challenges"\xbc\x01\n\rCodeChallenge\x12\x42\n\x06method\x18\x01 \x01(\x0e\x32\x32.spotify.login5.v3.challenges.CodeChallenge.Method\x12\x13\n\x0b\x63ode_length\x18\x02 \x01(\x05\x12\x12\n\nexpires_in\x18\x03 \x01(\x05\x12\x1e\n\x16\x63\x61nonical_phone_number\x18\x04 \x01(\t"\x1e\n\x06Method\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03SMS\x10\x01"\x1c\n\x0c\x43odeSolution\x12\x0c\n\x04\x63ode\x18\x01 \x01(\tB\x16\n\x14\x63om.spotify.login5v3b\x06proto3', -) - -_CODECHALLENGE_METHOD = _descriptor.EnumDescriptor( - name="Method", - full_name="spotify.login5.v3.challenges.CodeChallenge.Method", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="SMS", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=232, - serialized_end=262, -) -_sym_db.RegisterEnumDescriptor(_CODECHALLENGE_METHOD) - -_CODECHALLENGE = _descriptor.Descriptor( - name="CodeChallenge", - full_name="spotify.login5.v3.challenges.CodeChallenge", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="method", - full_name="spotify.login5.v3.challenges.CodeChallenge.method", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="code_length", - full_name="spotify.login5.v3.challenges.CodeChallenge.code_length", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="expires_in", - full_name="spotify.login5.v3.challenges.CodeChallenge.expires_in", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="canonical_phone_number", - full_name= - "spotify.login5.v3.challenges.CodeChallenge.canonical_phone_number", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[ - _CODECHALLENGE_METHOD, - ], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=74, - serialized_end=262, -) - -_CODESOLUTION = _descriptor.Descriptor( - name="CodeSolution", - full_name="spotify.login5.v3.challenges.CodeSolution", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="code", - full_name="spotify.login5.v3.challenges.CodeSolution.code", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=264, - serialized_end=292, -) - -_CODECHALLENGE.fields_by_name["method"].enum_type = _CODECHALLENGE_METHOD -_CODECHALLENGE_METHOD.containing_type = _CODECHALLENGE -DESCRIPTOR.message_types_by_name["CodeChallenge"] = _CODECHALLENGE -DESCRIPTOR.message_types_by_name["CodeSolution"] = _CODESOLUTION -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -CodeChallenge = _reflection.GeneratedProtocolMessageType( - "CodeChallenge", - (_message.Message, ), - { - "DESCRIPTOR": _CODECHALLENGE, - "__module__": "spotify.login5.v3.challenges.code_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.challenges.CodeChallenge) - }, -) -_sym_db.RegisterMessage(CodeChallenge) - -CodeSolution = _reflection.GeneratedProtocolMessageType( - "CodeSolution", - (_message.Message, ), - { - "DESCRIPTOR": _CODESOLUTION, - "__module__": "spotify.login5.v3.challenges.code_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.challenges.CodeSolution) - }, -) -_sym_db.RegisterMessage(CodeSolution) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/spotify/login5/v3/challenges/Hashcash_pb2.py b/librespot/proto/spotify/login5/v3/challenges/Hashcash_pb2.py deleted file mode 100644 index d12b2a5..0000000 --- a/librespot/proto/spotify/login5/v3/challenges/Hashcash_pb2.py +++ /dev/null @@ -1,176 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: spotify/login5/v3/challenges/hashcash.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import \ - duration_pb2 as google_dot_protobuf_dot_duration__pb2 -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="spotify/login5/v3/challenges/hashcash.proto", - package="spotify.login5.v3.challenges", - syntax="proto3", - serialized_options=b"\n\024com.spotify.login5v3", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n+spotify/login5/v3/challenges/hashcash.proto\x12\x1cspotify.login5.v3.challenges\x1a\x1egoogle/protobuf/duration.proto"3\n\x11HashcashChallenge\x12\x0e\n\x06prefix\x18\x01 \x01(\x0c\x12\x0e\n\x06length\x18\x02 \x01(\x05"O\n\x10HashcashSolution\x12\x0e\n\x06suffix\x18\x01 \x01(\x0c\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x16\n\x14\x63om.spotify.login5v3b\x06proto3', - dependencies=[ - google_dot_protobuf_dot_duration__pb2.DESCRIPTOR, - ], -) - -_HASHCASHCHALLENGE = _descriptor.Descriptor( - name="HashcashChallenge", - full_name="spotify.login5.v3.challenges.HashcashChallenge", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="prefix", - full_name="spotify.login5.v3.challenges.HashcashChallenge.prefix", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="length", - full_name="spotify.login5.v3.challenges.HashcashChallenge.length", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=109, - serialized_end=160, -) - -_HASHCASHSOLUTION = _descriptor.Descriptor( - name="HashcashSolution", - full_name="spotify.login5.v3.challenges.HashcashSolution", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="suffix", - full_name="spotify.login5.v3.challenges.HashcashSolution.suffix", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="duration", - full_name="spotify.login5.v3.challenges.HashcashSolution.duration", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=162, - serialized_end=241, -) - -_HASHCASHSOLUTION.fields_by_name[ - "duration"].message_type = google_dot_protobuf_dot_duration__pb2._DURATION -DESCRIPTOR.message_types_by_name["HashcashChallenge"] = _HASHCASHCHALLENGE -DESCRIPTOR.message_types_by_name["HashcashSolution"] = _HASHCASHSOLUTION -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -HashcashChallenge = _reflection.GeneratedProtocolMessageType( - "HashcashChallenge", - (_message.Message, ), - { - "DESCRIPTOR": _HASHCASHCHALLENGE, - "__module__": "spotify.login5.v3.challenges.hashcash_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.challenges.HashcashChallenge) - }, -) -_sym_db.RegisterMessage(HashcashChallenge) - -HashcashSolution = _reflection.GeneratedProtocolMessageType( - "HashcashSolution", - (_message.Message, ), - { - "DESCRIPTOR": _HASHCASHSOLUTION, - "__module__": "spotify.login5.v3.challenges.hashcash_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.challenges.HashcashSolution) - }, -) -_sym_db.RegisterMessage(HashcashSolution) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/spotify/login5/v3/challenges/__init__.py b/librespot/proto/spotify/login5/v3/challenges/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/librespot/proto/spotify/login5/v3/challenges/__pycache__/Code_pb2.cpython-312.pyc b/librespot/proto/spotify/login5/v3/challenges/__pycache__/Code_pb2.cpython-312.pyc deleted file mode 100644 index 767ff09..0000000 Binary files a/librespot/proto/spotify/login5/v3/challenges/__pycache__/Code_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/challenges/__pycache__/Hashcash_pb2.cpython-312.pyc b/librespot/proto/spotify/login5/v3/challenges/__pycache__/Hashcash_pb2.cpython-312.pyc deleted file mode 100644 index f3784ef..0000000 Binary files a/librespot/proto/spotify/login5/v3/challenges/__pycache__/Hashcash_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/challenges/__pycache__/__init__.cpython-312.pyc b/librespot/proto/spotify/login5/v3/challenges/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 5a9d20f..0000000 Binary files a/librespot/proto/spotify/login5/v3/challenges/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/credentials/Credentials_pb2.py b/librespot/proto/spotify/login5/v3/credentials/Credentials_pb2.py deleted file mode 100644 index f141f66..0000000 --- a/librespot/proto/spotify/login5/v3/credentials/Credentials_pb2.py +++ /dev/null @@ -1,483 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: spotify/login5/v3/credentials/credentials.proto -"""Generated protocol buffer code.""" -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="spotify/login5/v3/credentials/credentials.proto", - package="spotify.login5.v3.credentials", - syntax="proto3", - serialized_options=b"\n\024com.spotify.login5v3", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n/spotify/login5/v3/credentials/credentials.proto\x12\x1dspotify.login5.v3.credentials"2\n\x10StoredCredential\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c"9\n\x08Password\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\x12\x0f\n\x07padding\x18\x03 \x01(\x0c";\n\x13\x46\x61\x63\x65\x62ookAccessToken\x12\x0e\n\x06\x66\x62_uid\x18\x01 \x01(\t\x12\x14\n\x0c\x61\x63\x63\x65ss_token\x18\x02 \x01(\t"\x1d\n\x0cOneTimeToken\x12\r\n\x05token\x18\x01 \x01(\t"|\n\x15ParentChildCredential\x12\x10\n\x08\x63hild_id\x18\x01 \x01(\t\x12Q\n\x18parent_stored_credential\x18\x02 \x01(\x0b\x32/.spotify.login5.v3.credentials.StoredCredential"S\n\x15\x41ppleSignInCredential\x12\x11\n\tauth_code\x18\x01 \x01(\t\x12\x14\n\x0credirect_uri\x18\x02 \x01(\t\x12\x11\n\tbundle_id\x18\x03 \x01(\tB\x16\n\x14\x63om.spotify.login5v3b\x06proto3', -) - -_STOREDCREDENTIAL = _descriptor.Descriptor( - name="StoredCredential", - full_name="spotify.login5.v3.credentials.StoredCredential", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="username", - full_name="spotify.login5.v3.credentials.StoredCredential.username", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="data", - full_name="spotify.login5.v3.credentials.StoredCredential.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=82, - serialized_end=132, -) - -_PASSWORD = _descriptor.Descriptor( - name="Password", - full_name="spotify.login5.v3.credentials.Password", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="id", - full_name="spotify.login5.v3.credentials.Password.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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="password", - full_name="spotify.login5.v3.credentials.Password.password", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="padding", - full_name="spotify.login5.v3.credentials.Password.padding", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=134, - serialized_end=191, -) - -_FACEBOOKACCESSTOKEN = _descriptor.Descriptor( - name="FacebookAccessToken", - full_name="spotify.login5.v3.credentials.FacebookAccessToken", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="fb_uid", - full_name= - "spotify.login5.v3.credentials.FacebookAccessToken.fb_uid", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="access_token", - full_name= - "spotify.login5.v3.credentials.FacebookAccessToken.access_token", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=193, - serialized_end=252, -) - -_ONETIMETOKEN = _descriptor.Descriptor( - name="OneTimeToken", - full_name="spotify.login5.v3.credentials.OneTimeToken", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="token", - full_name="spotify.login5.v3.credentials.OneTimeToken.token", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=254, - serialized_end=283, -) - -_PARENTCHILDCREDENTIAL = _descriptor.Descriptor( - name="ParentChildCredential", - full_name="spotify.login5.v3.credentials.ParentChildCredential", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="child_id", - full_name= - "spotify.login5.v3.credentials.ParentChildCredential.child_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="parent_stored_credential", - full_name= - "spotify.login5.v3.credentials.ParentChildCredential.parent_stored_credential", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=285, - serialized_end=409, -) - -_APPLESIGNINCREDENTIAL = _descriptor.Descriptor( - name="AppleSignInCredential", - full_name="spotify.login5.v3.credentials.AppleSignInCredential", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="auth_code", - full_name= - "spotify.login5.v3.credentials.AppleSignInCredential.auth_code", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="redirect_uri", - full_name= - "spotify.login5.v3.credentials.AppleSignInCredential.redirect_uri", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="bundle_id", - full_name= - "spotify.login5.v3.credentials.AppleSignInCredential.bundle_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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=411, - serialized_end=494, -) - -_PARENTCHILDCREDENTIAL.fields_by_name[ - "parent_stored_credential"].message_type = _STOREDCREDENTIAL -DESCRIPTOR.message_types_by_name["StoredCredential"] = _STOREDCREDENTIAL -DESCRIPTOR.message_types_by_name["Password"] = _PASSWORD -DESCRIPTOR.message_types_by_name["FacebookAccessToken"] = _FACEBOOKACCESSTOKEN -DESCRIPTOR.message_types_by_name["OneTimeToken"] = _ONETIMETOKEN -DESCRIPTOR.message_types_by_name[ - "ParentChildCredential"] = _PARENTCHILDCREDENTIAL -DESCRIPTOR.message_types_by_name[ - "AppleSignInCredential"] = _APPLESIGNINCREDENTIAL -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -StoredCredential = _reflection.GeneratedProtocolMessageType( - "StoredCredential", - (_message.Message, ), - { - "DESCRIPTOR": _STOREDCREDENTIAL, - "__module__": "spotify.login5.v3.credentials.credentials_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.StoredCredential) - }, -) -_sym_db.RegisterMessage(StoredCredential) - -Password = _reflection.GeneratedProtocolMessageType( - "Password", - (_message.Message, ), - { - "DESCRIPTOR": _PASSWORD, - "__module__": "spotify.login5.v3.credentials.credentials_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.Password) - }, -) -_sym_db.RegisterMessage(Password) - -FacebookAccessToken = _reflection.GeneratedProtocolMessageType( - "FacebookAccessToken", - (_message.Message, ), - { - "DESCRIPTOR": _FACEBOOKACCESSTOKEN, - "__module__": "spotify.login5.v3.credentials.credentials_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.FacebookAccessToken) - }, -) -_sym_db.RegisterMessage(FacebookAccessToken) - -OneTimeToken = _reflection.GeneratedProtocolMessageType( - "OneTimeToken", - (_message.Message, ), - { - "DESCRIPTOR": _ONETIMETOKEN, - "__module__": "spotify.login5.v3.credentials.credentials_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.OneTimeToken) - }, -) -_sym_db.RegisterMessage(OneTimeToken) - -ParentChildCredential = _reflection.GeneratedProtocolMessageType( - "ParentChildCredential", - (_message.Message, ), - { - "DESCRIPTOR": _PARENTCHILDCREDENTIAL, - "__module__": "spotify.login5.v3.credentials.credentials_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.ParentChildCredential) - }, -) -_sym_db.RegisterMessage(ParentChildCredential) - -AppleSignInCredential = _reflection.GeneratedProtocolMessageType( - "AppleSignInCredential", - (_message.Message, ), - { - "DESCRIPTOR": _APPLESIGNINCREDENTIAL, - "__module__": "spotify.login5.v3.credentials.credentials_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.AppleSignInCredential) - }, -) -_sym_db.RegisterMessage(AppleSignInCredential) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/spotify/login5/v3/credentials/__init__.py b/librespot/proto/spotify/login5/v3/credentials/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/librespot/proto/spotify/login5/v3/credentials/__pycache__/Credentials_pb2.cpython-312.pyc b/librespot/proto/spotify/login5/v3/credentials/__pycache__/Credentials_pb2.cpython-312.pyc deleted file mode 100644 index 281e5eb..0000000 Binary files a/librespot/proto/spotify/login5/v3/credentials/__pycache__/Credentials_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/credentials/__pycache__/__init__.cpython-312.pyc b/librespot/proto/spotify/login5/v3/credentials/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 6d04cb5..0000000 Binary files a/librespot/proto/spotify/login5/v3/credentials/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/identifiers/Identifiers.py b/librespot/proto/spotify/login5/v3/identifiers/Identifiers.py deleted file mode 100644 index 42457c5..0000000 --- a/librespot/proto/spotify/login5/v3/identifiers/Identifiers.py +++ /dev/null @@ -1,119 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: spotify/login5/v3/identifiers/identifiers.proto -"""Generated protocol buffer code.""" -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 - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name="spotify/login5/v3/identifiers/identifiers.proto", - package="spotify.login5.v3.identifiers", - syntax="proto3", - serialized_options=b"\n\024com.spotify.login5v3", - create_key=_descriptor._internal_create_key, - serialized_pb= - b'\n/spotify/login5/v3/identifiers/identifiers.proto\x12\x1dspotify.login5.v3.identifiers"U\n\x0bPhoneNumber\x12\x0e\n\x06number\x18\x01 \x01(\t\x12\x18\n\x10iso_country_code\x18\x02 \x01(\t\x12\x1c\n\x14\x63ountry_calling_code\x18\x03 \x01(\tB\x16\n\x14\x63om.spotify.login5v3b\x06proto3', -) - -_PHONENUMBER = _descriptor.Descriptor( - name="PhoneNumber", - full_name="spotify.login5.v3.identifiers.PhoneNumber", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="number", - full_name="spotify.login5.v3.identifiers.PhoneNumber.number", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="iso_country_code", - full_name= - "spotify.login5.v3.identifiers.PhoneNumber.iso_country_code", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="country_calling_code", - full_name= - "spotify.login5.v3.identifiers.PhoneNumber.country_calling_code", - 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, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=82, - serialized_end=167, -) - -DESCRIPTOR.message_types_by_name["PhoneNumber"] = _PHONENUMBER -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -PhoneNumber = _reflection.GeneratedProtocolMessageType( - "PhoneNumber", - (_message.Message, ), - { - "DESCRIPTOR": _PHONENUMBER, - "__module__": "spotify.login5.v3.identifiers.identifiers_pb2" - # @@protoc_insertion_point(class_scope:spotify.login5.v3.identifiers.PhoneNumber) - }, -) -_sym_db.RegisterMessage(PhoneNumber) - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto/spotify/login5/v3/identifiers/__init__.py b/librespot/proto/spotify/login5/v3/identifiers/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/librespot/proto/spotify/login5/v3/identifiers/__pycache__/Identifiers.cpython-312.pyc b/librespot/proto/spotify/login5/v3/identifiers/__pycache__/Identifiers.cpython-312.pyc deleted file mode 100644 index 5294ab0..0000000 Binary files a/librespot/proto/spotify/login5/v3/identifiers/__pycache__/Identifiers.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto/spotify/login5/v3/identifiers/__pycache__/__init__.cpython-312.pyc b/librespot/proto/spotify/login5/v3/identifiers/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 4ee8b1a..0000000 Binary files a/librespot/proto/spotify/login5/v3/identifiers/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto_ext/__init__.py b/librespot/proto_ext/__init__.py deleted file mode 100644 index 854e597..0000000 --- a/librespot/proto_ext/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Protobuf helpers for Spotify extended metadata.""" diff --git a/librespot/proto_ext/__pycache__/__init__.cpython-312.pyc b/librespot/proto_ext/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 3783c0b..0000000 Binary files a/librespot/proto_ext/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto_ext/__pycache__/audio_files_extension_pb2.cpython-312.pyc b/librespot/proto_ext/__pycache__/audio_files_extension_pb2.cpython-312.pyc deleted file mode 100644 index d952b18..0000000 Binary files a/librespot/proto_ext/__pycache__/audio_files_extension_pb2.cpython-312.pyc and /dev/null differ diff --git a/librespot/proto_ext/audio_files_extension_pb2.py b/librespot/proto_ext/audio_files_extension_pb2.py deleted file mode 100644 index 08f2bba..0000000 --- a/librespot/proto_ext/audio_files_extension_pb2.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: audio_files_extension.proto -# Protobuf Python Version: 6.31.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from librespot.proto import Metadata_pb2 as metadata__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1baudio_files_extension.proto\x12#spotify.extendedmetadata.audiofiles\x1a\x0emetadata.proto"@\n\x13NormalizationParams\x12\x13\n\x0bloudness_db\x18\x01 \x01(\x02\x12\x14\n\x0ctrue_peak_db\x18\x02 \x01(\x02"i\n\x11ExtendedAudioFile\x12/\n\x04file\x18\x01 \x01(\x0b2!.spotify.metadata.proto.AudioFile\x12\x17\n\x0faverage_bitrate\x18\x04 \x01(\x05J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04"\xc1\x02\n\x1bAudioFilesExtensionResponse\x12E\n\x05files\x18\x01 \x03(\x0b26.spotify.extendedmetadata.audiofiles.ExtendedAudioFile\x12c\n!default_file_normalization_params\x18\x02 \x01(\x0b28.spotify.extendedmetadata.audiofiles.NormalizationParams\x12d\n"default_album_normalization_params\x18\x03 \x01(\x0b28.spotify.extendedmetadata.audiofiles.NormalizationParams\x12\x10\n\x08audio_id\x18\x04 \x01(\x0cB \n\x1ccom.spotify.audiophile.protoH\x02b\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'audio_files_extension_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\034com.spotify.audiophile.protoH\002' - _globals['_NORMALIZATIONPARAMS']._serialized_start=84 - _globals['_NORMALIZATIONPARAMS']._serialized_end=148 - _globals['_EXTENDEDAUDIOFILE']._serialized_start=150 - _globals['_EXTENDEDAUDIOFILE']._serialized_end=249 - _globals['_AUDIOFILESEXTENSIONRESPONSE']._serialized_start=252 - _globals['_AUDIOFILESEXTENSIONRESPONSE']._serialized_end=573 -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto_ext/entity_extension_data_pb2.py b/librespot/proto_ext/entity_extension_data_pb2.py deleted file mode 100644 index 3283a6f..0000000 --- a/librespot/proto_ext/entity_extension_data_pb2.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: entity_extension_data.proto -# Protobuf Python Version: 6.31.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x65ntity_extension_data.proto\x12\x18spotify.extendedmetadata\x1a\x19google/protobuf/any.proto\"\x8c\x01\n\x19\x45ntityExtensionDataHeader\x12\x13\n\x0bstatus_code\x18\x01 \x01(\x05\x12\x0c\n\x04\x65tag\x18\x02 \x01(\t\x12\x0e\n\x06locale\x18\x03 \x01(\t\x12\x1c\n\x14\x63\x61\x63he_ttl_in_seconds\x18\x04 \x01(\x03\x12\x1e\n\x16offline_ttl_in_seconds\x18\x05 \x01(\x03\"\x9c\x01\n\x13\x45ntityExtensionData\x12\x43\n\x06header\x18\x01 \x01(\x0b\x32\x33.spotify.extendedmetadata.EntityExtensionDataHeader\x12\x12\n\nentity_uri\x18\x02 \x01(\t\x12,\n\x0e\x65xtension_data\x18\x03 \x01(\x0b\x32\x14.google.protobuf.Any\"$\n\x0ePlainListAssoc\x12\x12\n\nentity_uri\x18\x01 \x03(\t\"\r\n\x0b\x41ssocHeader\"|\n\x05\x41ssoc\x12\x35\n\x06header\x18\x01 \x01(\x0b\x32%.spotify.extendedmetadata.AssocHeader\x12<\n\nplain_list\x18\x02 \x01(\x0b\x32(.spotify.extendedmetadata.PlainListAssocB+\n\"com.spotify.extendedmetadata.protoH\x02P\x01\xf8\x01\x01\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'entity_extension_data_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\"com.spotify.extendedmetadata.protoH\002P\001\370\001\001' - _globals['_ENTITYEXTENSIONDATAHEADER']._serialized_start=85 - _globals['_ENTITYEXTENSIONDATAHEADER']._serialized_end=225 - _globals['_ENTITYEXTENSIONDATA']._serialized_start=228 - _globals['_ENTITYEXTENSIONDATA']._serialized_end=384 - _globals['_PLAINLISTASSOC']._serialized_start=386 - _globals['_PLAINLISTASSOC']._serialized_end=422 - _globals['_ASSOCHEADER']._serialized_start=424 - _globals['_ASSOCHEADER']._serialized_end=437 - _globals['_ASSOC']._serialized_start=439 - _globals['_ASSOC']._serialized_end=563 -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto_ext/extended_metadata_pb2.py b/librespot/proto_ext/extended_metadata_pb2.py deleted file mode 100644 index 408292e..0000000 --- a/librespot/proto_ext/extended_metadata_pb2.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: extended_metadata.proto -# Protobuf Python Version: 6.31.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from . import extension_kind_pb2 as extension__kind__pb2 -from . import entity_extension_data_pb2 as entity__extension__data__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x65xtended_metadata.proto\x12\x18spotify.extendedmetadata\x1a\x14\x65xtension_kind.proto\x1a\x1b\x65ntity_extension_data.proto\"_\n\x0e\x45xtensionQuery\x12?\n\x0e\x65xtension_kind\x18\x01 \x01(\x0e\x32\'.spotify.extendedmetadata.ExtensionKind\x12\x0c\n\x04\x65tag\x18\x02 \x01(\t\"\\\n\rEntityRequest\x12\x12\n\nentity_uri\x18\x01 \x01(\t\x12\x37\n\x05query\x18\x02 \x03(\x0b\x32(.spotify.extendedmetadata.ExtensionQuery\"Q\n\x1a\x42\x61tchedEntityRequestHeader\x12\x0f\n\x07\x63ountry\x18\x01 \x01(\t\x12\x11\n\tcatalogue\x18\x02 \x01(\t\x12\x0f\n\x07task_id\x18\x03 \x01(\x0c\"\x9d\x01\n\x14\x42\x61tchedEntityRequest\x12\x44\n\x06header\x18\x01 \x01(\x0b\x32\x34.spotify.extendedmetadata.BatchedEntityRequestHeader\x12?\n\x0e\x65ntity_request\x18\x02 \x03(\x0b\x32\'.spotify.extendedmetadata.EntityRequest\"\xbe\x01\n\x1e\x45ntityExtensionDataArrayHeader\x12\x1d\n\x15provider_error_status\x18\x01 \x01(\x05\x12\x1c\n\x14\x63\x61\x63he_ttl_in_seconds\x18\x02 \x01(\x03\x12\x1e\n\x16offline_ttl_in_seconds\x18\x03 \x01(\x03\x12?\n\x0e\x65xtension_type\x18\x04 \x01(\x0e\x32\'.spotify.extendedmetadata.ExtensionType\"\xec\x01\n\x18\x45ntityExtensionDataArray\x12H\n\x06header\x18\x01 \x01(\x0b\x32\x38.spotify.extendedmetadata.EntityExtensionDataArrayHeader\x12?\n\x0e\x65xtension_kind\x18\x02 \x01(\x0e\x32\'.spotify.extendedmetadata.ExtensionKind\x12\x45\n\x0e\x65xtension_data\x18\x03 \x03(\x0b\x32-.spotify.extendedmetadata.EntityExtensionData\" \n\x1e\x42\x61tchedExtensionResponseHeader\"\xb3\x01\n\x18\x42\x61tchedExtensionResponse\x12H\n\x06header\x18\x01 \x01(\x0b\x32\x38.spotify.extendedmetadata.BatchedExtensionResponseHeader\x12M\n\x11\x65xtended_metadata\x18\x02 \x03(\x0b\x32\x32.spotify.extendedmetadata.EntityExtensionDataArray*4\n\rExtensionType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07GENERIC\x10\x01\x12\t\n\x05\x41SSOC\x10\x02\x42+\n\"com.spotify.extendedmetadata.protoH\x02P\x01\xf8\x01\x01\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'extended_metadata_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\"com.spotify.extendedmetadata.protoH\002P\001\370\001\001' - _globals['_EXTENSIONTYPE']._serialized_start=1186 - _globals['_EXTENSIONTYPE']._serialized_end=1238 - _globals['_EXTENSIONQUERY']._serialized_start=104 - _globals['_EXTENSIONQUERY']._serialized_end=199 - _globals['_ENTITYREQUEST']._serialized_start=201 - _globals['_ENTITYREQUEST']._serialized_end=293 - _globals['_BATCHEDENTITYREQUESTHEADER']._serialized_start=295 - _globals['_BATCHEDENTITYREQUESTHEADER']._serialized_end=376 - _globals['_BATCHEDENTITYREQUEST']._serialized_start=379 - _globals['_BATCHEDENTITYREQUEST']._serialized_end=536 - _globals['_ENTITYEXTENSIONDATAARRAYHEADER']._serialized_start=539 - _globals['_ENTITYEXTENSIONDATAARRAYHEADER']._serialized_end=729 - _globals['_ENTITYEXTENSIONDATAARRAY']._serialized_start=732 - _globals['_ENTITYEXTENSIONDATAARRAY']._serialized_end=968 - _globals['_BATCHEDEXTENSIONRESPONSEHEADER']._serialized_start=970 - _globals['_BATCHEDEXTENSIONRESPONSEHEADER']._serialized_end=1002 - _globals['_BATCHEDEXTENSIONRESPONSE']._serialized_start=1005 - _globals['_BATCHEDEXTENSIONRESPONSE']._serialized_end=1184 -# @@protoc_insertion_point(module_scope) diff --git a/librespot/proto_ext/extension_kind_pb2.py b/librespot/proto_ext/extension_kind_pb2.py deleted file mode 100644 index 541f0e6..0000000 --- a/librespot/proto_ext/extension_kind_pb2.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: extension_kind.proto -# Protobuf Python Version: 6.31.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -# runtime version check intentionally removed to avoid import-time failures -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x65xtension_kind.proto\x12\x18spotify.extendedmetadata*\xbb#\n\rExtensionKind\x12\x15\n\x11UNKNOWN_EXTENSION\x10\x00\x12\n\n\x06\x43\x41NVAZ\x10\x01\x12\x0e\n\nSTORYLINES\x10\x02\x12\x12\n\x0ePODCAST_TOPICS\x10\x03\x12\x14\n\x10PODCAST_SEGMENTS\x10\x04\x12\x0f\n\x0b\x41UDIO_FILES\x10\x05\x12\x14\n\x10TRACK_DESCRIPTOR\x10\x06\x12\x13\n\x0fPODCAST_COUNTER\x10\x07\x12\r\n\tARTIST_V4\x10\x08\x12\x0c\n\x08\x41LBUM_V4\x10\t\x12\x0c\n\x08TRACK_V4\x10\n\x12\x0b\n\x07SHOW_V4\x10\x0b\x12\x0e\n\nEPISODE_V4\x10\x0c\x12\x1c\n\x18PODCAST_HTML_DESCRIPTION\x10\r\x12\x12\n\x0ePODCAST_QUOTES\x10\x0e\x12\x10\n\x0cUSER_PROFILE\x10\x0f\x12\r\n\tCANVAS_V1\x10\x10\x12\x10\n\x0cSHOW_V4_BASE\x10\x11\x12\x1a\n\x16SHOW_V4_EPISODES_ASSOC\x10\x12\x12\x1f\n\x1bTRACK_DESCRIPTOR_SIGNATURES\x10\x13\x12\x17\n\x13PODCAST_AD_SEGMENTS\x10\x14\x12\x17\n\x13\x45PISODE_TRANSCRIPTS\x10\x15\x12\x19\n\x15PODCAST_SUBSCRIPTIONS\x10\x16\x12\x13\n\x0f\x45XTRACTED_COLOR\x10\x17\x12\x14\n\x10PODCAST_VIRALITY\x10\x18\x12\x17\n\x13IMAGE_SPARKLES_HACK\x10\x19\x12\x1b\n\x17PODCAST_POPULARITY_HACK\x10\x1a\x12\x10\n\x0c\x41UTOMIX_MODE\x10\x1b\x12\r\n\tCUEPOINTS\x10\x1c\x12\x10\n\x0cPODCAST_POLL\x10\x1d\x12\x12\n\x0e\x45PISODE_ACCESS\x10\x1e\x12\x0f\n\x0bSHOW_ACCESS\x10\x1f\x12\x0f\n\x0bPODCAST_QNA\x10 \x12\t\n\x05\x43LIPS\x10!\x12\x0b\n\x07SHOW_V5\x10\"\x12\x0e\n\nEPISODE_V5\x10#\x12\x15\n\x11PODCAST_CTA_CARDS\x10$\x12\x12\n\x0ePODCAST_RATING\x10%\x12\x14\n\x10\x44ISPLAY_SEGMENTS\x10&\x12\r\n\tGREENROOM\x10\'\x12\x10\n\x0cUSER_CREATED\x10(\x12\x14\n\x10SHOW_DESCRIPTION\x10)\x12\x19\n\x15SHOW_HTML_DESCRIPTION\x10*\x12\x14\n\x10SHOW_PLAYABILITY\x10+\x12\x17\n\x13\x45PISODE_DESCRIPTION\x10,\x12\x1c\n\x18\x45PISODE_HTML_DESCRIPTION\x10-\x12\x17\n\x13\x45PISODE_PLAYABILITY\x10.\x12\x17\n\x13SHOW_EPISODES_ASSOC\x10/\x12\x11\n\rCLIENT_CONFIG\x10\x30\x12\x13\n\x0fPLAYLISTABILITY\x10\x31\x12\x10\n\x0c\x41UDIOBOOK_V5\x10\x32\x12\x0e\n\nCHAPTER_V5\x10\x33\x12\x17\n\x13\x41UDIOBOOK_SPECIFICS\x10\x34\x12\x13\n\x0f\x45PISODE_RANKING\x10\x35\x12\x14\n\x10HTML_DESCRIPTION\x10\x36\x12\x13\n\x0f\x43REATOR_CHANNEL\x10\x37\x12\x17\n\x13\x41UDIOBOOK_PROVIDERS\x10\x38\x12\x0e\n\nPLAY_TRAIT\x10\x39\x12\x13\n\x0f\x43ONTENT_WARNING\x10:\x12\r\n\tIMAGE_CUE\x10;\x12\x10\n\x0cSTREAM_COUNT\x10<\x12\x14\n\x10\x41UDIO_ATTRIBUTES\x10=\x12\x13\n\x0fNAVIGABLE_TRAIT\x10>\x12\x15\n\x11NEXT_BEST_EPISODE\x10?\x12\x13\n\x0f\x41UDIOBOOK_PRICE\x10@\x12\x18\n\x14\x45XPRESSIVE_PLAYLISTS\x10\x41\x12\x18\n\x14\x44YNAMIC_SHOW_EPISODE\x10\x42\x12\x08\n\x04LIVE\x10\x43\x12\x0f\n\x0bSKIP_PLAYED\x10\x44\x12\x1a\n\x16\x41\x44_BREAK_FREE_PODCASTS\x10\x45\x12\x10\n\x0c\x41SSOCIATIONS\x10\x46\x12\x17\n\x13PLAYLIST_EVALUATION\x10G\x12\x17\n\x13\x43\x41\x43HE_INVALIDATIONS\x10H\x12\x15\n\x11LIVESTREAM_ENTITY\x10I\x12\x18\n\x14SINGLE_TAP_REACTIONS\x10J\x12\x11\n\rUSER_COMMENTS\x10K\x12\x17\n\x13\x43LIENT_RESTRICTIONS\x10L\x12\x11\n\rPODCAST_GUEST\x10M\x12\x0f\n\x0bPLAYABILITY\x10N\x12\x0f\n\x0b\x43OVER_IMAGE\x10O\x12\x0f\n\x0bSHARE_TRAIT\x10P\x12\x14\n\x10INSTANCE_SHARING\x10Q\x12\x0f\n\x0b\x41RTIST_TOUR\x10R\x12\x13\n\x0f\x41UDIOBOOK_GENRE\x10S\x12\x0b\n\x07\x43ONCEPT\x10T\x12\x12\n\x0eORIGINAL_VIDEO\x10U\x12\x11\n\rSMART_SHUFFLE\x10V\x12\x0f\n\x0bLIVE_EVENTS\x10W\x12\x17\n\x13\x41UDIOBOOK_RELATIONS\x10X\x12\x15\n\x11HOME_POC_BASECARD\x10Y\x12\x19\n\x15\x41UDIOBOOK_SUPPLEMENTS\x10Z\x12\x17\n\x13PAID_PODCAST_BANNER\x10[\x12\r\n\tFEWER_ADS\x10\\\x12\x1c\n\x18WATCH_FEED_SHOW_EXPLORER\x10]\x12\x1b\n\x17TRACK_EXTRA_DESCRIPTORS\x10^\x12 \n\x1cTRACK_EXTRA_AUDIO_ATTRIBUTES\x10_\x12\x1a\n\x16TRACK_EXTENDED_CREDITS\x10`\x12\x10\n\x0cSIMPLE_TRAIT\x10\x61\x12\x16\n\x12\x41UDIO_ASSOCIATIONS\x10\x62\x12\x16\n\x12VIDEO_ASSOCIATIONS\x10\x63\x12\x12\n\x0ePLAYLIST_TUNER\x10\x64\x12\x1c\n\x18\x41RTIST_VIDEOS_ENTRYPOINT\x10\x65\x12\x14\n\x10\x41LBUM_PRERELEASE\x10\x66\x12\x18\n\x14\x43ONTENT_ALTERNATIVES\x10g\x12\x14\n\x10SNAPSHOT_SHARING\x10i\x12\x1a\n\x16\x44ISPLAY_SEGMENTS_COUNT\x10j\x12\x1c\n\x18PODCAST_FEATURED_EPISODE\x10k\x12\x1d\n\x19PODCAST_SPONSORED_CONTENT\x10l\x12\x1e\n\x1aPODCAST_EPISODE_TOPICS_LLM\x10m\x12\x1d\n\x19PODCAST_EPISODE_TOPICS_KG\x10n\x12\x1e\n\x1a\x45PISODE_RANKING_POPULARITY\x10o\x12\t\n\x05MERCH\x10p\x12\x15\n\x11\x43OMPANION_CONTENT\x10q\x12\x1e\n\x1aWATCH_FEED_ENTITY_EXPLORER\x10r\x12\x15\n\x11\x41NCHOR_CARD_TRAIT\x10s\x12 \n\x1c\x41UDIO_PREVIEW_PLAYBACK_TRAIT\x10t\x12\x1d\n\x19VIDEO_PREVIEW_STILL_TRAIT\x10u\x12\x16\n\x12PREVIEW_CARD_TRAIT\x10v\x12\x18\n\x14SHORTCUTS_CARD_TRAIT\x10w\x12 \n\x1cVIDEO_PREVIEW_PLAYBACK_TRAIT\x10x\x12\x14\n\x10\x43OURSE_SPECIFICS\x10y\x12\x0b\n\x07\x43ONCERT\x10z\x12\x14\n\x10\x43ONCERT_LOCATION\x10{\x12\x15\n\x11\x43ONCERT_MARKETING\x10|\x12\x16\n\x12\x43ONCERT_PERFORMERS\x10}\x12\x19\n\x15TRACK_PAIR_TRANSITION\x10~\x12\x16\n\x12\x43ONTENT_TYPE_TRAIT\x10\x7f\x12\x0f\n\nNAME_TRAIT\x10\x80\x01\x12\x12\n\rARTWORK_TRAIT\x10\x81\x01\x12\x17\n\x12RELEASE_DATE_TRAIT\x10\x82\x01\x12\x12\n\rCREDITS_TRAIT\x10\x83\x01\x12\x16\n\x11RELEASE_URI_TRAIT\x10\x84\x01\x12\x13\n\x0e\x45NTITY_CAPPING\x10\x85\x01\x12\x15\n\x10LESSON_SPECIFICS\x10\x86\x01\x12\x13\n\x0e\x43ONCERT_OFFERS\x10\x87\x01\x12\x14\n\x0fTRANSITION_MAPS\x10\x88\x01\x12\x18\n\x13\x41RTIST_HAS_CONCERTS\x10\x89\x01\x12\x0f\n\nPRERELEASE\x10\x8a\x01\x12\x1b\n\x16PLAYLIST_ATTRIBUTES_V2\x10\x8b\x01\x12\x17\n\x12LIST_ATTRIBUTES_V2\x10\x8c\x01\x12\x12\n\rLIST_METADATA\x10\x8d\x01\x12\x1e\n\x19LIST_TUNER_AUDIO_ANALYSIS\x10\x8e\x01\x12\x19\n\x14LIST_TUNER_CUEPOINTS\x10\x8f\x01\x12\x19\n\x14\x43ONTENT_RATING_TRAIT\x10\x90\x01\x12\x14\n\x0f\x43OPYRIGHT_TRAIT\x10\x91\x01\x12\x15\n\x10SUPPORTED_BADGES\x10\x92\x01\x12\x0b\n\x06\x42\x41\x44GES\x10\x93\x01\x12\x12\n\rPREVIEW_TRAIT\x10\x94\x01\x12\x1a\n\x15ROOTLISTABILITY_TRAIT\x10\x95\x01\x12\x13\n\x0eLOCAL_CONCERTS\x10\x96\x01\x12\x1a\n\x15RECOMMENDED_PLAYLISTS\x10\x97\x01\x12\x15\n\x10POPULAR_RELEASES\x10\x98\x01\x12\x15\n\x10RELATED_RELEASES\x10\x99\x01\x12\x17\n\x12SHARE_RESTRICTIONS\x10\x9a\x01\x12\x12\n\rCONCERT_OFFER\x10\x9b\x01\x12\x1b\n\x16\x43ONCERT_OFFER_PROVIDER\x10\x9c\x01\x12\x15\n\x10\x45NTITY_BOOKMARKS\x10\x9d\x01\x12\x12\n\rPRIVACY_TRAIT\x10\x9e\x01\x12\x1a\n\x15\x44UPLICATE_ITEMS_TRAIT\x10\x9f\x01\x12\x15\n\x10REORDERING_TRAIT\x10\xa0\x01\x12 \n\x1bPODCAST_RESUMPTION_SEGMENTS\x10\xa1\x01\x12\x1c\n\x17\x41RTIST_EXPRESSION_VIDEO\x10\xa2\x01\x12\x15\n\x10PRERELEASE_VIDEO\x10\xa3\x01\x12\x1b\n\x16GATED_ENTITY_RELATIONS\x10\xa4\x01\x12\x1d\n\x18RELATED_CREATORS_SECTION\x10\xa5\x01\x12 \n\x1b\x43REATORS_APPEARS_ON_SECTION\x10\xa6\x01\x12\x13\n\x0ePROMO_V1_TRAIT\x10\xa7\x01\x12\x1a\n\x15SPEECHLESS_SHARE_CARD\x10\xa8\x01\x12\x1a\n\x15TOP_PLAYABLES_SECTION\x10\xa9\x01\x12\x0e\n\tAUTO_LENS\x10\xaa\x01\x12\x13\n\x0ePROMO_V3_TRAIT\x10\xab\x01\x12\x19\n\x14TRACK_CONTENT_FILTER\x10\xac\x01\x12\x15\n\x10HIGHLIGHTABILITY\x10\xad\x01\x12\x1f\n\x1aLINK_CARD_WITH_IMAGE_TRAIT\x10\xae\x01\x12\x18\n\x13TRACK_CLOUD_SECTION\x10\xaf\x01\x12\x13\n\x0e\x45PISODE_TOPICS\x10\xb0\x01\x12\x14\n\x0fVIDEO_THUMBNAIL\x10\xb1\x01\x12\x13\n\x0eIDENTITY_TRAIT\x10\xb2\x01\x12\x1a\n\x15VISUAL_IDENTITY_TRAIT\x10\xb3\x01\x12\x1a\n\x15\x43ONTENT_TYPE_V2_TRAIT\x10\xb4\x01\x12\x1b\n\x16PREVIEW_PLAYBACK_TRAIT\x10\xb5\x01\x12!\n\x1c\x43ONSUMPTION_EXPERIENCE_TRAIT\x10\xb6\x01\x12\x1e\n\x19PUBLISHING_METADATA_TRAIT\x10\xb7\x01\x12\x1e\n\x19\x44\x45TAILED_EVALUATION_TRAIT\x10\xb8\x01\x12!\n\x1cON_PLATFORM_REPUTATION_TRAIT\x10\xb9\x01\x12\x15\n\x10\x43REDITS_V2_TRAIT\x10\xba\x01\x12 \n\x1bHIGHLIGHT_PLAYABILITY_TRAIT\x10\xbb\x01\x12\x16\n\x11SHOW_EPISODE_LIST\x10\xbc\x01\x12\x17\n\x12\x41VAILABLE_RELEASES\x10\xbd\x01\x12\x19\n\x14PLAYLIST_DESCRIPTORS\x10\xbe\x01\x12$\n\x1fLINK_CARD_WITH_ANIMATIONS_TRAIT\x10\xbf\x01\x12\n\n\x05RECAP\x10\xc0\x01\x12 \n\x1b\x41UDIOBOOK_COMPANION_CONTENT\x10\xc1\x01\x12\x1e\n\x19THREE_OH_THREE_PLAY_TRAIT\x10\xc2\x01\x12\x1e\n\x19\x41RTIST_WRAPPED_2024_VIDEO\x10\xc3\x01\x42\x41\n\"com.spotify.extendedmetadata.protoH\x02P\x01\xf8\x01\x01\xa2\x02\x13SPTExtendedMetadatab\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'extension_kind_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\"com.spotify.extendedmetadata.protoH\002P\001\370\001\001\242\002\023SPTExtendedMetadata' - _globals['_EXTENSIONKIND']._serialized_start=51 - _globals['_EXTENSIONKIND']._serialized_end=4590 -# @@protoc_insertion_point(module_scope) diff --git a/librespot/structure.py b/librespot/structure.py deleted file mode 100644 index 9171ada..0000000 --- a/librespot/structure.py +++ /dev/null @@ -1,103 +0,0 @@ -from __future__ import annotations -import typing - -if typing.TYPE_CHECKING: - from librespot.audio import AbsChunkedInputStream - from librespot.audio.format import SuperAudioFormat - from librespot.core import DealerClient, Session - from librespot.crypto import Packet - from librespot.mercury import MercuryClient - from librespot.proto import Metadata_pb2 as Metadata - - -class AudioDecrypt: - def decrypt_chunk(self, chunk_index: int, buffer: bytes): - raise NotImplementedError - - def decrypt_time_ms(self): - raise NotImplementedError - - -class AudioQualityPicker: - def get_file(self, - files: typing.List[Metadata.AudioFile]) -> Metadata.AudioFile: - raise NotImplementedError - - -class Closeable: - def close(self) -> None: - raise NotImplementedError - - -class FeederException(Exception): - pass - - -class GeneralAudioStream: - def stream(self) -> AbsChunkedInputStream: - raise NotImplementedError - - def codec(self) -> SuperAudioFormat: - raise NotImplementedError - - def describe(self) -> str: - raise NotImplementedError - - def decrypt_time_ms(self) -> int: - raise NotImplementedError - - -class GeneralWritableStream: - def write_chunk(self, buffer: bytearray, chunk_index: int, cached: bool): - raise NotImplementedError - - -class HaltListener: - def stream_read_halted(self, chunk: int, _time: int) -> None: - raise NotImplementedError - - def stream_read_resumed(self, chunk: int, _time: int) -> None: - raise NotImplementedError - - -class MessageListener: - def on_message(self, uri: str, headers: typing.Dict[str, str], - payload: bytes): - raise NotImplementedError - - -class NoopAudioDecrypt(AudioDecrypt): - def decrypt_chunk(self, chunk_index: int, buffer: bytes): - return buffer - - def decrypt_time_ms(self): - return 0 - - -class PacketsReceiver: - def dispatch(self, packet: Packet): - raise NotImplementedError - - -class RequestListener: - def on_request(self, mid: str, pid: int, sender: str, - command: typing.Any) -> DealerClient.RequestResult: - raise NotImplementedError - - -class Runnable: - def run(self): - raise NotImplementedError - - -class SessionListener: - def session_closing(self, session: Session) -> None: - raise NotImplementedError - - def session_changed(self, session: Session) -> None: - raise NotImplementedError - - -class SubListener: - def event(self, resp: MercuryClient.Response) -> None: - raise NotImplementedError diff --git a/librespot/util.py b/librespot/util.py deleted file mode 100644 index 28d7441..0000000 --- a/librespot/util.py +++ /dev/null @@ -1,117 +0,0 @@ -from Cryptodome import Random -import binascii -import math - - -def bytes_to_hex(buffer: bytes) -> str: - """ - Convert bytes to hex - Args: - buffer: Bytes to convert - Returns: - hex - """ - return binascii.hexlify(buffer).decode() - - -def hex_to_bytes(s: str) -> bytes: - return binascii.unhexlify(s) - - -def int_to_bytes(i: int): - """ - Convert an integer to a byte(s) - Args: - i: Integer to convert - Returns: - bytes - """ - width = i.bit_length() - width += 8 - ((width % 8) or 8) - fmt = '%%0%dx' % (width // 4) - return b"\x00" if i == 0 else binascii.unhexlify(fmt % i) - - -def random_hex_string(length: int): - buffer = Random.get_random_bytes(int(length / 2)) - return bytes_to_hex(buffer) - - -class Base62: - standard_base = 256 - target_base = 62 - alphabet: bytes - lookup: bytearray - - def __init__(self, alphabet: bytes): - self.alphabet = alphabet - self.create_lookup_table() - - @staticmethod - def create_instance_with_inverted_character_set(): - return Base62(Base62.CharacterSets.inverted) - - def encode(self, message: bytes, length: int = -1): - indices = self.convert(message, self.standard_base, self.target_base, - length) - return self.translate(indices, self.alphabet) - - def decode(self, encoded: bytes, length: int = -1): - prepared = self.translate(encoded, self.lookup) - return self.convert(prepared, self.target_base, self.standard_base, - length) - - def translate(self, indices: bytes, dictionary: bytes): - translation = bytearray(len(indices)) - for i in range(len(indices)): - translation[i] = dictionary[int.from_bytes(bytes([indices[i]]), "big")] - return translation - - def convert(self, message: bytes, source_base: int, target_base: int, - length: int): - estimated_length = self.estimate_output_length( - len(message), source_base, target_base) if length == -1 else length - out = b"" - source = message - while len(source) > 0: - quotient = b"" - remainder = 0 - for b in source: - accumulator = int(b & 0xff) + remainder * source_base - digit = int( - (accumulator - (accumulator % target_base)) / target_base) - remainder = int(accumulator % target_base) - if len(quotient) > 0 or digit > 0: - quotient += bytes([digit]) - out += bytes([remainder]) - source = quotient - if len(out) < estimated_length: - size = len(out) - for _ in range(estimated_length - size): - out += bytes([0]) - return self.reverse(out) - if len(out) > estimated_length: - return self.reverse(out[:estimated_length]) - return self.reverse(out) - - def estimate_output_length(self, input_length: int, source_base: int, - target_base: int): - return int( - math.ceil((math.log(source_base) / math.log(target_base)) * - input_length)) - - def reverse(self, arr: bytes): - length = len(arr) - reversed_arr = bytearray(length) - for i in range(length): - reversed_arr[length - i - 1] = arr[i] - return bytes(reversed_arr) - - def create_lookup_table(self): - self.lookup = bytearray(256) - for i in range(len(self.alphabet)): - self.lookup[self.alphabet[i]] = i & 0xff - - class CharacterSets: - gmp = b'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' - inverted = b'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' diff --git a/librespot/zeroconf.py b/librespot/zeroconf.py deleted file mode 100644 index afe6847..0000000 --- a/librespot/zeroconf.py +++ /dev/null @@ -1,345 +0,0 @@ -from __future__ import annotations -from Cryptodome.Cipher import AES -from Cryptodome.Hash import HMAC, SHA1 -from Cryptodome.Util import Counter -from librespot import util, Version -from librespot.core import Session -from librespot.crypto import DiffieHellman -from librespot.proto import Connect_pb2 as Connect -from librespot.structure import Closeable, Runnable, SessionListener -import base64 -import concurrent.futures -import copy -import io -import json -import logging -import random -import socket -import threading -import typing -import urllib.parse -import zeroconf - - -class ZeroconfServer(Closeable): - logger = logging.getLogger("Librespot:ZeroconfServer") - service = "_spotify-connect._tcp.local." - __connecting_username: typing.Union[str, None] = None - __connection_lock = threading.Condition() - __default_get_info_fields = { - "status": 101, - "statusString": "OK", - "spotifyError": 0, - "version": "2.7.1", - "libraryVersion": Version.version_name, - "accountReq": "PREMIUM", - "brandDisplayName": "kokarare1212", - "modelDisplayName": "librespot-python", - "voiceSupport": "NO", - "availability": "", - "productID": 0, - "tokenType": "default", - "groupStatus": "NONE", - "resolverVersion": "0", - "scope": "streaming,client-authorization-universal", - } - __default_successful_add_user = { - "status": 101, - "spotifyError": 0, - "statusString": "OK", - } - __eol = b"\r\n" - __max_port = 65536 - __min_port = 1024 - __runner: HttpRunner - __service_info: zeroconf.ServiceInfo - __session: typing.Union[Session, None] = None - __session_listeners: typing.List[SessionListener] = [] - __zeroconf: zeroconf.Zeroconf - - def __init__(self, inner: Inner, listen_port): - self.__inner = inner - self.__keys = DiffieHellman() - if listen_port == -1: - listen_port = random.randint(self.__min_port + 1, self.__max_port) - self.__runner = ZeroconfServer.HttpRunner(self, listen_port) - threading.Thread(target=self.__runner.run, - name="zeroconf-http-server").start() - self.__zeroconf = zeroconf.Zeroconf() - self.__service_info = zeroconf.ServiceInfo( - ZeroconfServer.service, - inner.device_name + "." + ZeroconfServer.service, - listen_port, - 0, - 0, { - "CPath": "/", - "VERSION": "1.0", - "STACK": "SP", - }, - self.get_useful_hostname() + ".", - addresses=[ - socket.inet_aton( - socket.gethostbyname(self.get_useful_hostname())) - ]) - self.__zeroconf.register_service(self.__service_info) - threading.Thread(target=self.__zeroconf.start, - name="zeroconf-multicast-dns-server").start() - - def add_session_listener(self, listener: ZeroconfServer): - self.__session_listeners.append(listener) - - def close(self) -> None: - self.__zeroconf.close() - self.__runner.close() - - def close_session(self) -> None: - if self.__session is None: - return - for session_listener in self.__session_listeners: - session_listener.session_closing(self.__session) - self.__session.close() - self.__session = None - - def get_useful_hostname(self) -> str: - host = socket.gethostname() - if host == "localhost": - pass - else: - return host - - def handle_add_user(self, __socket: socket.socket, params: dict[str, str], - http_version: str) -> None: - username = params.get("userName") - if not username: - self.logger.error("Missing userName!") - return - blob_str = params.get("blob") - if not blob_str: - self.logger.error("Missing blob!") - return - client_key_str = params.get("clientKey") - if not client_key_str: - self.logger.error("Missing clientKey!") - with self.__connection_lock: - if username == self.__connecting_username: - self.logger.info( - "{} is already trying to connect.".format(username)) - __socket.send(http_version.encode()) - __socket.send(b" 403 Forbidden") - __socket.send(self.__eol) - __socket.send(self.__eol) - return - shared_key = util.int_to_bytes( - self.__keys.compute_shared_key( - base64.b64decode(client_key_str.encode()))) - blob_bytes = base64.b64decode(blob_str) - iv = blob_bytes[:16] - encrypted = blob_bytes[16:len(blob_bytes) - 20] - checksum = blob_bytes[len(blob_bytes) - 20:] - sha1 = SHA1.new() - sha1.update(shared_key) - base_key = sha1.digest()[:16] - hmac = HMAC.new(base_key, digestmod=SHA1) - hmac.update(b"checksum") - checksum_key = hmac.digest() - hmac = HMAC.new(base_key, digestmod=SHA1) - hmac.update(b"encryption") - encryption_key = hmac.digest() - hmac = HMAC.new(checksum_key, digestmod=SHA1) - hmac.update(encrypted) - mac = hmac.digest() - if mac != checksum: - self.logger.error("Mac and checksum don't match!") - __socket.send(http_version.encode()) - __socket.send(b" 400 Bad Request") - __socket.send(self.__eol) - __socket.send(self.__eol) - return - aes = AES.new(encryption_key[:16], - AES.MODE_CTR, - counter=Counter.new(128, - initial_value=int.from_bytes( - iv, "big"))) - decrypted = aes.decrypt(encrypted) - self.close_session() - with self.__connection_lock: - self.__connecting_username = username - self.logger.info("Accepted new user from {}. [deviceId: {}]".format( - params.get("deviceName"), self.__inner.device_id)) - response = json.dumps(self.__default_successful_add_user) - __socket.send(http_version.encode()) - __socket.send(b" 200 OK") - __socket.send(self.__eol) - __socket.send(b"Content-Length: ") - __socket.send(str(len(response)).encode()) - __socket.send(self.__eol) - __socket.send(self.__eol) - __socket.send(response.encode()) - self.__session = Session.Builder(self.__inner.conf) \ - .set_device_id(self.__inner.device_id) \ - .set_device_name(self.__inner.device_name) \ - .set_device_type(self.__inner.device_type) \ - .set_preferred_locale(self.__inner.preferred_locale) \ - .blob(username, decrypted) \ - .create() - with self.__connection_lock: - self.__connecting_username = None - for session_listener in self.__session_listeners: - session_listener.session_changed(self.__session) - - def handle_get_info(self, __socket: socket.socket, - http_version: str) -> None: - info = copy.deepcopy(self.__default_get_info_fields) - info["deviceID"] = self.__inner.device_id - info["remoteName"] = self.__inner.device_name - info["publicKey"] = base64.b64encode( - self.__keys.public_key_bytes()).decode() - info["deviceType"] = Connect.DeviceType.Name(self.__inner.device_type) - with self.__connection_lock: - info[ - "activeUser"] = self.__connecting_username if self.__connecting_username is not None else self.__session.username( - ) if self.has_valid_session() else "" - __socket.send(http_version.encode()) - __socket.send(b" 200 OK") - __socket.send(self.__eol) - __socket.send(b"Content-Type: application/json") - __socket.send(self.__eol) - __socket.send(self.__eol) - __socket.send(json.dumps(info).encode()) - - def has_valid_session(self) -> bool: - valid = self.__session and self.__session.is_valid() - if not valid: - self.__session = None - return valid - - def parse_path(self, path: str) -> dict[str, str]: - url = "https://host" + path - parsed = {} - params = urllib.parse.parse_qs(urllib.parse.urlparse(url).query) - for key, values in params.items(): - for value in values: - parsed[key] = value - return parsed - - def remove_session_listener(self, listener: SessionListener): - self.__session_listeners.remove(listener) - - class Builder(Session.Builder): - listen_port: int = -1 - - def set_listen_port(self, listen_port: int): - self.listen_port = listen_port - return self - - def create(self) -> ZeroconfServer: - return ZeroconfServer( - ZeroconfServer.Inner(self.device_type, self.device_name, - self.device_id, self.preferred_locale, - self.conf), self.listen_port) - - class HttpRunner(Closeable, Runnable): - __should_stop = False - __socket: socket.socket - __worker = concurrent.futures.ThreadPoolExecutor() - __zeroconf_server: ZeroconfServer - - def __init__(self, zeroconf_server: ZeroconfServer, port: int): - self.__socket = socket.socket() - self.__socket.bind((".".join(["0"] * 4), port)) - self.__socket.listen(5) - self.__zeroconf_server = zeroconf_server - self.__zeroconf_server.logger.info( - "Zeroconf HTTP server started successfully on port {}!".format( - port)) - - def close(self) -> None: - pass - - def run(self): - while not self.__should_stop: - __socket, address = self.__socket.accept() - - def anonymous(): - self.__handle(__socket) - __socket.close() - - self.__worker.submit(anonymous) - - def __handle(self, __socket: socket.socket) -> None: - request = io.BytesIO(__socket.recv(1024 * 1024)) - request_line = request.readline().strip().split(b" ") - if len(request_line) != 3: - self.__zeroconf_server.logger.warning( - "Unexpected request line: {}".format(request_line)) - method = request_line[0].decode() - path = request_line[1].decode() - http_version = request_line[2].decode() - headers = {} - while True: - header = request.readline().strip() - if not header: - break - split = header.split(b":") - headers[split[0].decode()] = split[1].strip().decode() - if not self.__zeroconf_server.has_valid_session(): - self.__zeroconf_server.logger.debug( - "Handling request: {}, {}, {}, headers: {}".format( - method, path, http_version, headers)) - params = {} - if method == "POST": - content_type = headers.get("Content-Type") - if content_type != "application/x-www-form-urlencoded": - self.__zeroconf_server.logger.error( - "Bad Content-Type: {}".format(content_type)) - return - content_length_str = headers.get("Content-Length") - if content_length_str is None: - self.__zeroconf_server.logger.error( - "Missing Content-Length header!") - return - content_length = int(content_length_str) - body = request.read(content_length).decode() - pairs = body.split("&") - for pair in pairs: - split = pair.split("=") - params[urllib.parse.unquote( - split[0])] = urllib.parse.unquote(split[1]) - else: - params = self.__zeroconf_server.parse_path(path) - action = params.get("action") - if action is None: - self.__zeroconf_server.logger.debug( - "Request is missing action.") - return - self.handle_request(__socket, http_version, action, params) - - def handle_request(self, __socket: socket.socket, http_version: str, - action: str, params: dict[str, str]) -> None: - if action == "addUser": - if params is None: - raise RuntimeError - self.__zeroconf_server.handle_add_user(__socket, params, - http_version) - elif action == "getInfo": - self.__zeroconf_server.handle_get_info(__socket, http_version) - else: - self.__zeroconf_server.logger.warning( - "Unknown action: {}".format(action)) - - class Inner: - conf: typing.Final[Session.Configuration] - device_name: typing.Final[str] - device_id: typing.Final[str] - device_type: typing.Final[Connect.DeviceType] - preferred_locale: typing.Final[str] - - def __init__(self, device_type: Connect.DeviceType, device_name: str, - device_id: str, preferred_locale: str, - conf: Session.Configuration): - self.conf = conf - self.device_name = device_name - self.device_id = util.random_hex_string( - 40).lower() if not device_id else device_id - self.device_type = device_type - self.preferred_locale = preferred_locale diff --git a/zotify/utils.py b/zotify/utils.py index 5719049..e15421e 100644 --- a/zotify/utils.py +++ b/zotify/utils.py @@ -118,7 +118,7 @@ def splash() -> str: | | ███╔╝ ██║ ██║ ██║ ██║██╔══╝ ╚██╔╝ | | | | ███████╗╚██████╔╝ ██║ ██║██║ ██║ | | | | ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ | | -| | VERSION {version} | | +| | VERSION {version} | | | ____ _ _ _ __ | | | _ \ __ _| |_ ___| |__ ___ __| | / _| ___ _ __ | | | |_) / _` | __/ __| '_ \ / _ \/ _` | | |_ / _ \| '__| |