mirror of
https://github.com/owntone/owntone-server.git
synced 2025-10-29 15:55:02 -04:00
[spotify] librespot-c update (protobuf automake + metadata proto update)
New metadata probably necessary to support lossless
This commit is contained in:
parent
336200727d
commit
365694d863
@ -3,44 +3,63 @@ SUBDIRS = tests
|
|||||||
noinst_LIBRARIES = librespot-c.a
|
noinst_LIBRARIES = librespot-c.a
|
||||||
|
|
||||||
SHANNON_SRC = \
|
SHANNON_SRC = \
|
||||||
src/shannon/ShannonFast.c src/shannon/Shannon.h src/shannon/ShannonInternal.h
|
src/shannon/ShannonFast.c \
|
||||||
|
src/shannon/Shannon.h \
|
||||||
|
src/shannon/ShannonInternal.h
|
||||||
|
|
||||||
|
PROTO_FILES = \
|
||||||
|
src/proto/keyexchange.proto \
|
||||||
|
src/proto/authentication.proto \
|
||||||
|
src/proto/mercury.proto \
|
||||||
|
src/proto/metadata.proto \
|
||||||
|
src/proto/connectivity.proto \
|
||||||
|
src/proto/clienttoken.proto \
|
||||||
|
src/proto/login5_user_info.proto \
|
||||||
|
src/proto/login5.proto \
|
||||||
|
src/proto/login5_identifiers.proto \
|
||||||
|
src/proto/login5_credentials.proto \
|
||||||
|
src/proto/login5_client_info.proto \
|
||||||
|
src/proto/login5_challenges_hashcash.proto \
|
||||||
|
src/proto/login5_challenges_code.proto \
|
||||||
|
src/proto/google_duration.proto \
|
||||||
|
src/proto/storage_resolve.proto \
|
||||||
|
src/proto/extended_metadata.proto \
|
||||||
|
src/proto/extension_kind.proto \
|
||||||
|
src/proto/entity_extension_data.proto \
|
||||||
|
src/proto/google_any.proto
|
||||||
|
|
||||||
PROTO_SRC = \
|
PROTO_SRC = \
|
||||||
src/proto/keyexchange.pb-c.c src/proto/keyexchange.pb-c.h \
|
$(PROTO_FILES:.proto=.pb-c.c) $(PROTO_FILES:.proto=.pb-c.h)
|
||||||
src/proto/authentication.pb-c.c src/proto/authentication.pb-c.h \
|
|
||||||
src/proto/mercury.pb-c.c src/proto/mercury.pb-c.h \
|
|
||||||
src/proto/metadata.pb-c.c src/proto/metadata.pb-c.h
|
|
||||||
|
|
||||||
HTTP_PROTO_SRC = \
|
|
||||||
src/proto/connectivity.pb-c.c src/proto/connectivity.pb-c.h \
|
|
||||||
src/proto/clienttoken.pb-c.c src/proto/clienttoken.pb-c.h \
|
|
||||||
src/proto/login5_user_info.pb-c.h src/proto/login5_user_info.pb-c.c \
|
|
||||||
src/proto/login5.pb-c.h src/proto/login5.pb-c.c \
|
|
||||||
src/proto/login5_identifiers.pb-c.h src/proto/login5_identifiers.pb-c.c \
|
|
||||||
src/proto/login5_credentials.pb-c.h src/proto/login5_credentials.pb-c.c \
|
|
||||||
src/proto/login5_client_info.pb-c.h src/proto/login5_client_info.pb-c.c \
|
|
||||||
src/proto/login5_challenges_hashcash.pb-c.h src/proto/login5_challenges_hashcash.pb-c.c \
|
|
||||||
src/proto/login5_challenges_code.pb-c.h src/proto/login5_challenges_code.pb-c.c \
|
|
||||||
src/proto/google_duration.pb-c.h src/proto/google_duration.pb-c.c \
|
|
||||||
src/proto/storage_resolve.pb-c.h src/proto/storage_resolve.pb-c.c \
|
|
||||||
src/proto/extended_metadata.pb-c.h src/proto/extended_metadata.pb-c.c \
|
|
||||||
src/proto/extension_kind.pb-c.h src/proto/extension_kind.pb-c.c \
|
|
||||||
src/proto/entity_extension_data.pb-c.h src/proto/entity_extension_data.pb-c.c \
|
|
||||||
src/proto/google_any.pb-c.h src/proto/google_any.pb-c.c
|
|
||||||
|
|
||||||
|
|
||||||
CORE_SRC = \
|
CORE_SRC = \
|
||||||
src/librespot-c.c src/connection.c src/channel.c src/crypto.c src/commands.c \
|
src/librespot-c.c \
|
||||||
|
src/connection.c \
|
||||||
|
src/channel.c \
|
||||||
|
src/crypto.c \
|
||||||
|
src/commands.c \
|
||||||
src/http.c
|
src/http.c
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
$(PROTO_SRC)
|
||||||
|
|
||||||
librespot_c_a_SOURCES = \
|
librespot_c_a_SOURCES = \
|
||||||
$(CORE_SRC) \
|
$(CORE_SRC) \
|
||||||
$(SHANNON_SRC) \
|
$(SHANNON_SRC) \
|
||||||
$(PROTO_SRC) \
|
$(PROTO_SRC)
|
||||||
$(HTTP_PROTO_SRC)
|
|
||||||
|
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
librespot-c.h src/librespot-c-internal.h src/connection.h \
|
librespot-c.h \
|
||||||
src/channel.h src/crypto.h src/commands.h src/http.h
|
src/librespot-c-internal.h \
|
||||||
|
src/connection.h \
|
||||||
|
src/channel.h \
|
||||||
|
src/crypto.h \
|
||||||
|
src/commands.h \
|
||||||
|
src/http.h
|
||||||
|
|
||||||
EXTRA_DIST = README.md LICENSE
|
EXTRA_DIST = \
|
||||||
|
README.md \
|
||||||
|
LICENSE \
|
||||||
|
$(PROTO_FILES)
|
||||||
|
|
||||||
|
%.pb-c.c %.pb-c.h: %.proto
|
||||||
|
$(AM_V_GEN)$(PROTOC) --proto_path=src/proto --c_out=src/proto $<
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
AC_INIT([librespot-c], [0.6])
|
AC_INIT([librespot-c], [0.7])
|
||||||
AC_CONFIG_AUX_DIR([.])
|
AC_CONFIG_AUX_DIR([.])
|
||||||
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
||||||
AM_SILENT_RULES([yes])
|
AM_SILENT_RULES([yes])
|
||||||
@ -10,6 +10,8 @@ AC_PROG_CC
|
|||||||
AM_PROG_AR
|
AM_PROG_AR
|
||||||
AC_PROG_RANLIB
|
AC_PROG_RANLIB
|
||||||
|
|
||||||
|
AC_PATH_PROG([PROTOC], [protoc-c])
|
||||||
|
|
||||||
AM_CPPFLAGS="-Wall"
|
AM_CPPFLAGS="-Wall"
|
||||||
AC_SUBST([AM_CPPFLAGS])
|
AC_SUBST([AM_CPPFLAGS])
|
||||||
|
|
||||||
|
|||||||
@ -169,11 +169,11 @@ system_info_from_uname(SystemInfo *system_info)
|
|||||||
// Returns true if format of a is preferred over b (and is valid). According to
|
// Returns true if format of a is preferred over b (and is valid). According to
|
||||||
// librespot comment most podcasts are 96 kbit.
|
// librespot comment most podcasts are 96 kbit.
|
||||||
static bool
|
static bool
|
||||||
format_is_preferred(AudioFile *a, AudioFile *b, enum sp_bitrates bitrate_preferred)
|
format_is_preferred(Spotify__Metadata__AudioFile *a, Spotify__Metadata__AudioFile *b, enum sp_bitrates bitrate_preferred)
|
||||||
{
|
{
|
||||||
if (a->format != AUDIO_FILE__FORMAT__OGG_VORBIS_96 &&
|
if (a->format != SPOTIFY__METADATA__AUDIO_FILE__FORMAT__OGG_VORBIS_96 &&
|
||||||
a->format != AUDIO_FILE__FORMAT__OGG_VORBIS_160 &&
|
a->format != SPOTIFY__METADATA__AUDIO_FILE__FORMAT__OGG_VORBIS_160 &&
|
||||||
a->format != AUDIO_FILE__FORMAT__OGG_VORBIS_320)
|
a->format != SPOTIFY__METADATA__AUDIO_FILE__FORMAT__OGG_VORBIS_320)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!b)
|
if (!b)
|
||||||
@ -184,9 +184,9 @@ format_is_preferred(AudioFile *a, AudioFile *b, enum sp_bitrates bitrate_preferr
|
|||||||
case SP_BITRATE_96:
|
case SP_BITRATE_96:
|
||||||
return (a->format < b->format); // Prefer lowest
|
return (a->format < b->format); // Prefer lowest
|
||||||
case SP_BITRATE_160:
|
case SP_BITRATE_160:
|
||||||
if (b->format == AUDIO_FILE__FORMAT__OGG_VORBIS_160)
|
if (b->format == SPOTIFY__METADATA__AUDIO_FILE__FORMAT__OGG_VORBIS_160)
|
||||||
return false;
|
return false;
|
||||||
else if (a->format == AUDIO_FILE__FORMAT__OGG_VORBIS_160)
|
else if (a->format == SPOTIFY__METADATA__AUDIO_FILE__FORMAT__OGG_VORBIS_160)
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
return (a->format < b->format); // Prefer lowest
|
return (a->format < b->format); // Prefer lowest
|
||||||
@ -200,10 +200,10 @@ format_is_preferred(AudioFile *a, AudioFile *b, enum sp_bitrates bitrate_preferr
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
file_select(uint8_t *out, size_t out_len, Track *track, enum sp_bitrates bitrate_preferred)
|
file_select(uint8_t *out, size_t out_len, Spotify__Metadata__Track *track, enum sp_bitrates bitrate_preferred)
|
||||||
{
|
{
|
||||||
AudioFile *selected = NULL;
|
Spotify__Metadata__AudioFile *selected = NULL;
|
||||||
AudioFile *file;
|
Spotify__Metadata__AudioFile *file;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < track->n_file; i++)
|
for (i = 0; i < track->n_file; i++)
|
||||||
@ -461,7 +461,7 @@ mercury_free(struct sp_mercury *mercury, int content_only)
|
|||||||
free(mercury->parts[i].data);
|
free(mercury->parts[i].data);
|
||||||
|
|
||||||
if (mercury->parts[i].track)
|
if (mercury->parts[i].track)
|
||||||
track__free_unpacked(mercury->parts[i].track, NULL);
|
spotify__metadata__track__free_unpacked(mercury->parts[i].track, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (content_only)
|
if (content_only)
|
||||||
@ -546,7 +546,7 @@ mercury_parse(struct sp_mercury *mercury, uint8_t *payload, size_t payload_len)
|
|||||||
memcpy(mercury->parts[i].data, ptr, mercury->parts[i].len);
|
memcpy(mercury->parts[i].data, ptr, mercury->parts[i].len);
|
||||||
ptr += mercury->parts[i].len; // 5: length += mercury->parts[i].len
|
ptr += mercury->parts[i].len; // 5: length += mercury->parts[i].len
|
||||||
|
|
||||||
mercury->parts[i].track = track__unpack(NULL, mercury->parts[i].len, mercury->parts[i].data);
|
mercury->parts[i].track = spotify__metadata__track__unpack(NULL, mercury->parts[i].len, mercury->parts[i].data);
|
||||||
}
|
}
|
||||||
|
|
||||||
header__free_unpacked(header, NULL);
|
header__free_unpacked(header, NULL);
|
||||||
@ -1056,14 +1056,14 @@ handle_metadata_get(struct sp_message *msg, struct sp_session *session)
|
|||||||
{
|
{
|
||||||
struct http_response *hres = &msg->payload.hres;
|
struct http_response *hres = &msg->payload.hres;
|
||||||
struct sp_channel *channel = session->now_streaming_channel;
|
struct sp_channel *channel = session->now_streaming_channel;
|
||||||
Track *response = NULL;
|
Spotify__Metadata__Track *response = NULL;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (hres->code != HTTP_OK)
|
if (hres->code != HTTP_OK)
|
||||||
goto fallback;
|
goto fallback;
|
||||||
|
|
||||||
// Also works for Episode response
|
// Also works for Episode response
|
||||||
response = track__unpack(NULL, hres->body_len, hres->body);
|
response = spotify__metadata__track__unpack(NULL, hres->body_len, hres->body);
|
||||||
if (!response)
|
if (!response)
|
||||||
goto fallback;
|
goto fallback;
|
||||||
|
|
||||||
@ -1071,13 +1071,13 @@ handle_metadata_get(struct sp_message *msg, struct sp_session *session)
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto fallback;
|
goto fallback;
|
||||||
|
|
||||||
track__free_unpacked(response, NULL);
|
spotify__metadata__track__free_unpacked(response, NULL);
|
||||||
return SP_OK_DONE;
|
return SP_OK_DONE;
|
||||||
|
|
||||||
fallback:
|
fallback:
|
||||||
sp_cb.logmsg("Couldn't find file id in metadata response, will request extended metadata\n");
|
sp_cb.logmsg("Couldn't find file id in metadata response, will request extended metadata\n");
|
||||||
|
|
||||||
track__free_unpacked(response, NULL);
|
spotify__metadata__track__free_unpacked(response, NULL);
|
||||||
return SP_OK_DONE;
|
return SP_OK_DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1093,7 +1093,7 @@ handle_extended_metadata_get(struct sp_message *msg, struct sp_session *session)
|
|||||||
struct sp_channel *channel = session->now_streaming_channel;
|
struct sp_channel *channel = session->now_streaming_channel;
|
||||||
Spotify__Extendedmetadata__BatchedExtensionResponse *response = NULL;
|
Spotify__Extendedmetadata__BatchedExtensionResponse *response = NULL;
|
||||||
Spotify__Extendedmetadata__EntityExtensionData *entity_extension_data = NULL;
|
Spotify__Extendedmetadata__EntityExtensionData *entity_extension_data = NULL;
|
||||||
Track *track = NULL;
|
Spotify__Metadata__Track *track = NULL;
|
||||||
int i, j;
|
int i, j;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -1128,7 +1128,7 @@ handle_extended_metadata_get(struct sp_message *msg, struct sp_session *session)
|
|||||||
// .Episode. If we get something else we will fail later anyway.
|
// .Episode. If we get something else we will fail later anyway.
|
||||||
|
|
||||||
// This also works for episodes
|
// This also works for episodes
|
||||||
track = track__unpack(NULL, entity_extension_data->extension_data->value.len, entity_extension_data->extension_data->value.data);
|
track = spotify__metadata__track__unpack(NULL, entity_extension_data->extension_data->value.len, entity_extension_data->extension_data->value.data);
|
||||||
if (!track)
|
if (!track)
|
||||||
RETURN_ERROR(SP_ERR_INVALID, "Could not parse track data in extended metadata response");
|
RETURN_ERROR(SP_ERR_INVALID, "Could not parse track data in extended metadata response");
|
||||||
|
|
||||||
@ -1137,12 +1137,12 @@ handle_extended_metadata_get(struct sp_message *msg, struct sp_session *session)
|
|||||||
RETURN_ERROR(SP_ERR_INVALID, "Could not find track data in extended metadata response");
|
RETURN_ERROR(SP_ERR_INVALID, "Could not find track data in extended metadata response");
|
||||||
|
|
||||||
spotify__extendedmetadata__batched_extension_response__free_unpacked(response, NULL);
|
spotify__extendedmetadata__batched_extension_response__free_unpacked(response, NULL);
|
||||||
track__free_unpacked(track, NULL);
|
spotify__metadata__track__free_unpacked(track, NULL);
|
||||||
return SP_OK_DONE;
|
return SP_OK_DONE;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
spotify__extendedmetadata__batched_extension_response__free_unpacked(response, NULL);
|
spotify__extendedmetadata__batched_extension_response__free_unpacked(response, NULL);
|
||||||
track__free_unpacked(track, NULL);
|
spotify__metadata__track__free_unpacked(track, NULL);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -296,7 +296,7 @@ struct sp_mercury
|
|||||||
uint8_t *data;
|
uint8_t *data;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
Track *track;
|
Spotify__Metadata__Track *track;
|
||||||
} parts[SP_MERCURY_MAX_PARTS];
|
} parts[SP_MERCURY_MAX_PARTS];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
||||||
/* Generated from: proto/authentication.proto */
|
/* Generated from: authentication.proto */
|
||||||
|
|
||||||
/* Do not generate deprecated warnings for self */
|
/* Do not generate deprecated warnings for self */
|
||||||
#ifndef PROTOBUF_C__NO_DEPRECATED
|
#ifndef PROTOBUF_C__NO_DEPRECATED
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
||||||
/* Generated from: proto/authentication.proto */
|
/* Generated from: authentication.proto */
|
||||||
|
|
||||||
#ifndef PROTOBUF_C_proto_2fauthentication_2eproto__INCLUDED
|
#ifndef PROTOBUF_C_authentication_2eproto__INCLUDED
|
||||||
#define PROTOBUF_C_proto_2fauthentication_2eproto__INCLUDED
|
#define PROTOBUF_C_authentication_2eproto__INCLUDED
|
||||||
|
|
||||||
#include <protobuf-c/protobuf-c.h>
|
#include <protobuf-c/protobuf-c.h>
|
||||||
|
|
||||||
@ -10,27 +10,27 @@ PROTOBUF_C__BEGIN_DECLS
|
|||||||
|
|
||||||
#if PROTOBUF_C_VERSION_NUMBER < 1000000
|
#if PROTOBUF_C_VERSION_NUMBER < 1000000
|
||||||
# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
|
# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
|
||||||
#elif 1003003 < PROTOBUF_C_MIN_COMPILER_VERSION
|
#elif 1004001 < PROTOBUF_C_MIN_COMPILER_VERSION
|
||||||
# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
|
# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
typedef struct _ClientResponseEncrypted ClientResponseEncrypted;
|
typedef struct ClientResponseEncrypted ClientResponseEncrypted;
|
||||||
typedef struct _LoginCredentials LoginCredentials;
|
typedef struct LoginCredentials LoginCredentials;
|
||||||
typedef struct _FingerprintResponseUnion FingerprintResponseUnion;
|
typedef struct FingerprintResponseUnion FingerprintResponseUnion;
|
||||||
typedef struct _FingerprintGrainResponse FingerprintGrainResponse;
|
typedef struct FingerprintGrainResponse FingerprintGrainResponse;
|
||||||
typedef struct _FingerprintHmacRipemdResponse FingerprintHmacRipemdResponse;
|
typedef struct FingerprintHmacRipemdResponse FingerprintHmacRipemdResponse;
|
||||||
typedef struct _PeerTicketUnion PeerTicketUnion;
|
typedef struct PeerTicketUnion PeerTicketUnion;
|
||||||
typedef struct _PeerTicketPublicKey PeerTicketPublicKey;
|
typedef struct PeerTicketPublicKey PeerTicketPublicKey;
|
||||||
typedef struct _PeerTicketOld PeerTicketOld;
|
typedef struct PeerTicketOld PeerTicketOld;
|
||||||
typedef struct _SystemInfo SystemInfo;
|
typedef struct SystemInfo SystemInfo;
|
||||||
typedef struct _LibspotifyAppKey LibspotifyAppKey;
|
typedef struct LibspotifyAppKey LibspotifyAppKey;
|
||||||
typedef struct _ClientInfo ClientInfo;
|
typedef struct ClientInfo ClientInfo;
|
||||||
typedef struct _ClientInfoFacebook ClientInfoFacebook;
|
typedef struct ClientInfoFacebook ClientInfoFacebook;
|
||||||
typedef struct _APWelcome APWelcome;
|
typedef struct APWelcome APWelcome;
|
||||||
typedef struct _AccountInfo AccountInfo;
|
typedef struct AccountInfo AccountInfo;
|
||||||
typedef struct _AccountInfoSpotify AccountInfoSpotify;
|
typedef struct AccountInfoSpotify AccountInfoSpotify;
|
||||||
typedef struct _AccountInfoFacebook AccountInfoFacebook;
|
typedef struct AccountInfoFacebook AccountInfoFacebook;
|
||||||
|
|
||||||
|
|
||||||
/* --- enums --- */
|
/* --- enums --- */
|
||||||
@ -102,7 +102,7 @@ typedef enum _AccountType {
|
|||||||
|
|
||||||
/* --- messages --- */
|
/* --- messages --- */
|
||||||
|
|
||||||
struct _ClientResponseEncrypted
|
struct ClientResponseEncrypted
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
LoginCredentials *login_credentials;
|
LoginCredentials *login_credentials;
|
||||||
@ -121,7 +121,7 @@ struct _ClientResponseEncrypted
|
|||||||
, NULL, 0, ACCOUNT_CREATION__ACCOUNT_CREATION_ALWAYS_PROMPT, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
|
, NULL, 0, ACCOUNT_CREATION__ACCOUNT_CREATION_ALWAYS_PROMPT, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _LoginCredentials
|
struct LoginCredentials
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
char *username;
|
char *username;
|
||||||
@ -134,7 +134,7 @@ struct _LoginCredentials
|
|||||||
, NULL, AUTHENTICATION_TYPE__AUTHENTICATION_USER_PASS, 0, {0,NULL} }
|
, NULL, AUTHENTICATION_TYPE__AUTHENTICATION_USER_PASS, 0, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _FingerprintResponseUnion
|
struct FingerprintResponseUnion
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
FingerprintGrainResponse *grain;
|
FingerprintGrainResponse *grain;
|
||||||
@ -145,7 +145,7 @@ struct _FingerprintResponseUnion
|
|||||||
, NULL, NULL }
|
, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _FingerprintGrainResponse
|
struct FingerprintGrainResponse
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData encrypted_key;
|
ProtobufCBinaryData encrypted_key;
|
||||||
@ -155,7 +155,7 @@ struct _FingerprintGrainResponse
|
|||||||
, {0,NULL} }
|
, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _FingerprintHmacRipemdResponse
|
struct FingerprintHmacRipemdResponse
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData hmac;
|
ProtobufCBinaryData hmac;
|
||||||
@ -165,7 +165,7 @@ struct _FingerprintHmacRipemdResponse
|
|||||||
, {0,NULL} }
|
, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _PeerTicketUnion
|
struct PeerTicketUnion
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
PeerTicketPublicKey *public_key;
|
PeerTicketPublicKey *public_key;
|
||||||
@ -176,7 +176,7 @@ struct _PeerTicketUnion
|
|||||||
, NULL, NULL }
|
, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _PeerTicketPublicKey
|
struct PeerTicketPublicKey
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData public_key;
|
ProtobufCBinaryData public_key;
|
||||||
@ -186,7 +186,7 @@ struct _PeerTicketPublicKey
|
|||||||
, {0,NULL} }
|
, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _PeerTicketOld
|
struct PeerTicketOld
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData peer_ticket;
|
ProtobufCBinaryData peer_ticket;
|
||||||
@ -197,7 +197,7 @@ struct _PeerTicketOld
|
|||||||
, {0,NULL}, {0,NULL} }
|
, {0,NULL}, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _SystemInfo
|
struct SystemInfo
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
CpuFamily cpu_family;
|
CpuFamily cpu_family;
|
||||||
@ -222,7 +222,7 @@ struct _SystemInfo
|
|||||||
, CPU_FAMILY__CPU_UNKNOWN, 0, 0, 0, 0, 0, BRAND__BRAND_UNBRANDED, 0, 0, OS__OS_UNKNOWN, 0, 0, 0, 0, NULL, NULL }
|
, CPU_FAMILY__CPU_UNKNOWN, 0, 0, 0, 0, 0, BRAND__BRAND_UNBRANDED, 0, 0, OS__OS_UNKNOWN, 0, 0, 0, 0, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _LibspotifyAppKey
|
struct LibspotifyAppKey
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
@ -236,7 +236,7 @@ struct _LibspotifyAppKey
|
|||||||
, 0, {0,NULL}, {0,NULL}, NULL, {0,NULL} }
|
, 0, {0,NULL}, {0,NULL}, NULL, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _ClientInfo
|
struct ClientInfo
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
protobuf_c_boolean has_limited;
|
protobuf_c_boolean has_limited;
|
||||||
@ -249,7 +249,7 @@ struct _ClientInfo
|
|||||||
, 0, 0, NULL, NULL }
|
, 0, 0, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _ClientInfoFacebook
|
struct ClientInfoFacebook
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
char *machine_id;
|
char *machine_id;
|
||||||
@ -259,7 +259,7 @@ struct _ClientInfoFacebook
|
|||||||
, NULL }
|
, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _APWelcome
|
struct APWelcome
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
char *canonical_username;
|
char *canonical_username;
|
||||||
@ -277,7 +277,7 @@ struct _APWelcome
|
|||||||
, NULL, ACCOUNT_TYPE__Spotify, ACCOUNT_TYPE__Spotify, AUTHENTICATION_TYPE__AUTHENTICATION_USER_PASS, {0,NULL}, 0, {0,NULL}, NULL, NULL }
|
, NULL, ACCOUNT_TYPE__Spotify, ACCOUNT_TYPE__Spotify, AUTHENTICATION_TYPE__AUTHENTICATION_USER_PASS, {0,NULL}, 0, {0,NULL}, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _AccountInfo
|
struct AccountInfo
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
AccountInfoSpotify *spotify;
|
AccountInfoSpotify *spotify;
|
||||||
@ -288,7 +288,7 @@ struct _AccountInfo
|
|||||||
, NULL, NULL }
|
, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _AccountInfoSpotify
|
struct AccountInfoSpotify
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
};
|
};
|
||||||
@ -297,7 +297,7 @@ struct _AccountInfoSpotify
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct _AccountInfoFacebook
|
struct AccountInfoFacebook
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
char *access_token;
|
char *access_token;
|
||||||
@ -694,4 +694,4 @@ extern const ProtobufCMessageDescriptor account_info_facebook__descriptor;
|
|||||||
PROTOBUF_C__END_DECLS
|
PROTOBUF_C__END_DECLS
|
||||||
|
|
||||||
|
|
||||||
#endif /* PROTOBUF_C_proto_2fauthentication_2eproto__INCLUDED */
|
#endif /* PROTOBUF_C_authentication_2eproto__INCLUDED */
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
||||||
/* Generated from: proto/keyexchange.proto */
|
/* Generated from: keyexchange.proto */
|
||||||
|
|
||||||
/* Do not generate deprecated warnings for self */
|
/* Do not generate deprecated warnings for self */
|
||||||
#ifndef PROTOBUF_C__NO_DEPRECATED
|
#ifndef PROTOBUF_C__NO_DEPRECATED
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
||||||
/* Generated from: proto/keyexchange.proto */
|
/* Generated from: keyexchange.proto */
|
||||||
|
|
||||||
#ifndef PROTOBUF_C_proto_2fkeyexchange_2eproto__INCLUDED
|
#ifndef PROTOBUF_C_keyexchange_2eproto__INCLUDED
|
||||||
#define PROTOBUF_C_proto_2fkeyexchange_2eproto__INCLUDED
|
#define PROTOBUF_C_keyexchange_2eproto__INCLUDED
|
||||||
|
|
||||||
#include <protobuf-c/protobuf-c.h>
|
#include <protobuf-c/protobuf-c.h>
|
||||||
|
|
||||||
@ -10,38 +10,38 @@ PROTOBUF_C__BEGIN_DECLS
|
|||||||
|
|
||||||
#if PROTOBUF_C_VERSION_NUMBER < 1000000
|
#if PROTOBUF_C_VERSION_NUMBER < 1000000
|
||||||
# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
|
# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
|
||||||
#elif 1003003 < PROTOBUF_C_MIN_COMPILER_VERSION
|
#elif 1004001 < PROTOBUF_C_MIN_COMPILER_VERSION
|
||||||
# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
|
# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
typedef struct _ClientHello ClientHello;
|
typedef struct ClientHello ClientHello;
|
||||||
typedef struct _BuildInfo BuildInfo;
|
typedef struct BuildInfo BuildInfo;
|
||||||
typedef struct _LoginCryptoHelloUnion LoginCryptoHelloUnion;
|
typedef struct LoginCryptoHelloUnion LoginCryptoHelloUnion;
|
||||||
typedef struct _LoginCryptoDiffieHellmanHello LoginCryptoDiffieHellmanHello;
|
typedef struct LoginCryptoDiffieHellmanHello LoginCryptoDiffieHellmanHello;
|
||||||
typedef struct _FeatureSet FeatureSet;
|
typedef struct FeatureSet FeatureSet;
|
||||||
typedef struct _APResponseMessage APResponseMessage;
|
typedef struct APResponseMessage APResponseMessage;
|
||||||
typedef struct _APChallenge APChallenge;
|
typedef struct APChallenge APChallenge;
|
||||||
typedef struct _LoginCryptoChallengeUnion LoginCryptoChallengeUnion;
|
typedef struct LoginCryptoChallengeUnion LoginCryptoChallengeUnion;
|
||||||
typedef struct _LoginCryptoDiffieHellmanChallenge LoginCryptoDiffieHellmanChallenge;
|
typedef struct LoginCryptoDiffieHellmanChallenge LoginCryptoDiffieHellmanChallenge;
|
||||||
typedef struct _FingerprintChallengeUnion FingerprintChallengeUnion;
|
typedef struct FingerprintChallengeUnion FingerprintChallengeUnion;
|
||||||
typedef struct _FingerprintGrainChallenge FingerprintGrainChallenge;
|
typedef struct FingerprintGrainChallenge FingerprintGrainChallenge;
|
||||||
typedef struct _FingerprintHmacRipemdChallenge FingerprintHmacRipemdChallenge;
|
typedef struct FingerprintHmacRipemdChallenge FingerprintHmacRipemdChallenge;
|
||||||
typedef struct _PoWChallengeUnion PoWChallengeUnion;
|
typedef struct PoWChallengeUnion PoWChallengeUnion;
|
||||||
typedef struct _PoWHashCashChallenge PoWHashCashChallenge;
|
typedef struct PoWHashCashChallenge PoWHashCashChallenge;
|
||||||
typedef struct _CryptoChallengeUnion CryptoChallengeUnion;
|
typedef struct CryptoChallengeUnion CryptoChallengeUnion;
|
||||||
typedef struct _CryptoShannonChallenge CryptoShannonChallenge;
|
typedef struct CryptoShannonChallenge CryptoShannonChallenge;
|
||||||
typedef struct _CryptoRc4Sha1HmacChallenge CryptoRc4Sha1HmacChallenge;
|
typedef struct CryptoRc4Sha1HmacChallenge CryptoRc4Sha1HmacChallenge;
|
||||||
typedef struct _UpgradeRequiredMessage UpgradeRequiredMessage;
|
typedef struct UpgradeRequiredMessage UpgradeRequiredMessage;
|
||||||
typedef struct _APLoginFailed APLoginFailed;
|
typedef struct APLoginFailed APLoginFailed;
|
||||||
typedef struct _ClientResponsePlaintext ClientResponsePlaintext;
|
typedef struct ClientResponsePlaintext ClientResponsePlaintext;
|
||||||
typedef struct _LoginCryptoResponseUnion LoginCryptoResponseUnion;
|
typedef struct LoginCryptoResponseUnion LoginCryptoResponseUnion;
|
||||||
typedef struct _LoginCryptoDiffieHellmanResponse LoginCryptoDiffieHellmanResponse;
|
typedef struct LoginCryptoDiffieHellmanResponse LoginCryptoDiffieHellmanResponse;
|
||||||
typedef struct _PoWResponseUnion PoWResponseUnion;
|
typedef struct PoWResponseUnion PoWResponseUnion;
|
||||||
typedef struct _PoWHashCashResponse PoWHashCashResponse;
|
typedef struct PoWHashCashResponse PoWHashCashResponse;
|
||||||
typedef struct _CryptoResponseUnion CryptoResponseUnion;
|
typedef struct CryptoResponseUnion CryptoResponseUnion;
|
||||||
typedef struct _CryptoShannonResponse CryptoShannonResponse;
|
typedef struct CryptoShannonResponse CryptoShannonResponse;
|
||||||
typedef struct _CryptoRc4Sha1HmacResponse CryptoRc4Sha1HmacResponse;
|
typedef struct CryptoRc4Sha1HmacResponse CryptoRc4Sha1HmacResponse;
|
||||||
|
|
||||||
|
|
||||||
/* --- enums --- */
|
/* --- enums --- */
|
||||||
@ -117,7 +117,7 @@ typedef enum _ErrorCode {
|
|||||||
|
|
||||||
/* --- messages --- */
|
/* --- messages --- */
|
||||||
|
|
||||||
struct _ClientHello
|
struct ClientHello
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
BuildInfo *build_info;
|
BuildInfo *build_info;
|
||||||
@ -138,7 +138,7 @@ struct _ClientHello
|
|||||||
, NULL, 0,NULL, 0,NULL, 0,NULL, NULL, {0,NULL}, 0, {0,NULL}, NULL }
|
, NULL, 0,NULL, 0,NULL, 0,NULL, NULL, {0,NULL}, 0, {0,NULL}, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _BuildInfo
|
struct BuildInfo
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
Product product;
|
Product product;
|
||||||
@ -152,7 +152,7 @@ struct _BuildInfo
|
|||||||
, PRODUCT__PRODUCT_CLIENT, 0,NULL, PLATFORM__PLATFORM_WIN32_X86, 0 }
|
, PRODUCT__PRODUCT_CLIENT, 0,NULL, PLATFORM__PLATFORM_WIN32_X86, 0 }
|
||||||
|
|
||||||
|
|
||||||
struct _LoginCryptoHelloUnion
|
struct LoginCryptoHelloUnion
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
LoginCryptoDiffieHellmanHello *diffie_hellman;
|
LoginCryptoDiffieHellmanHello *diffie_hellman;
|
||||||
@ -162,7 +162,7 @@ struct _LoginCryptoHelloUnion
|
|||||||
, NULL }
|
, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _LoginCryptoDiffieHellmanHello
|
struct LoginCryptoDiffieHellmanHello
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData gc;
|
ProtobufCBinaryData gc;
|
||||||
@ -173,7 +173,7 @@ struct _LoginCryptoDiffieHellmanHello
|
|||||||
, {0,NULL}, 0 }
|
, {0,NULL}, 0 }
|
||||||
|
|
||||||
|
|
||||||
struct _FeatureSet
|
struct FeatureSet
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
protobuf_c_boolean has_autoupdate2;
|
protobuf_c_boolean has_autoupdate2;
|
||||||
@ -186,7 +186,7 @@ struct _FeatureSet
|
|||||||
, 0, 0, 0, 0 }
|
, 0, 0, 0, 0 }
|
||||||
|
|
||||||
|
|
||||||
struct _APResponseMessage
|
struct APResponseMessage
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
APChallenge *challenge;
|
APChallenge *challenge;
|
||||||
@ -198,7 +198,7 @@ struct _APResponseMessage
|
|||||||
, NULL, NULL, NULL }
|
, NULL, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _APChallenge
|
struct APChallenge
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
LoginCryptoChallengeUnion *login_crypto_challenge;
|
LoginCryptoChallengeUnion *login_crypto_challenge;
|
||||||
@ -214,7 +214,7 @@ struct _APChallenge
|
|||||||
, NULL, NULL, NULL, NULL, {0,NULL}, 0, {0,NULL} }
|
, NULL, NULL, NULL, NULL, {0,NULL}, 0, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _LoginCryptoChallengeUnion
|
struct LoginCryptoChallengeUnion
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
LoginCryptoDiffieHellmanChallenge *diffie_hellman;
|
LoginCryptoDiffieHellmanChallenge *diffie_hellman;
|
||||||
@ -224,7 +224,7 @@ struct _LoginCryptoChallengeUnion
|
|||||||
, NULL }
|
, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _LoginCryptoDiffieHellmanChallenge
|
struct LoginCryptoDiffieHellmanChallenge
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData gs;
|
ProtobufCBinaryData gs;
|
||||||
@ -236,7 +236,7 @@ struct _LoginCryptoDiffieHellmanChallenge
|
|||||||
, {0,NULL}, 0, {0,NULL} }
|
, {0,NULL}, 0, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _FingerprintChallengeUnion
|
struct FingerprintChallengeUnion
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
FingerprintGrainChallenge *grain;
|
FingerprintGrainChallenge *grain;
|
||||||
@ -247,7 +247,7 @@ struct _FingerprintChallengeUnion
|
|||||||
, NULL, NULL }
|
, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _FingerprintGrainChallenge
|
struct FingerprintGrainChallenge
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData kek;
|
ProtobufCBinaryData kek;
|
||||||
@ -257,7 +257,7 @@ struct _FingerprintGrainChallenge
|
|||||||
, {0,NULL} }
|
, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _FingerprintHmacRipemdChallenge
|
struct FingerprintHmacRipemdChallenge
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData challenge;
|
ProtobufCBinaryData challenge;
|
||||||
@ -267,7 +267,7 @@ struct _FingerprintHmacRipemdChallenge
|
|||||||
, {0,NULL} }
|
, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _PoWChallengeUnion
|
struct PoWChallengeUnion
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
PoWHashCashChallenge *hash_cash;
|
PoWHashCashChallenge *hash_cash;
|
||||||
@ -277,7 +277,7 @@ struct _PoWChallengeUnion
|
|||||||
, NULL }
|
, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _PoWHashCashChallenge
|
struct PoWHashCashChallenge
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
protobuf_c_boolean has_prefix;
|
protobuf_c_boolean has_prefix;
|
||||||
@ -292,7 +292,7 @@ struct _PoWHashCashChallenge
|
|||||||
, 0, {0,NULL}, 0, 0, 0, 0 }
|
, 0, {0,NULL}, 0, 0, 0, 0 }
|
||||||
|
|
||||||
|
|
||||||
struct _CryptoChallengeUnion
|
struct CryptoChallengeUnion
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
CryptoShannonChallenge *shannon;
|
CryptoShannonChallenge *shannon;
|
||||||
@ -303,7 +303,7 @@ struct _CryptoChallengeUnion
|
|||||||
, NULL, NULL }
|
, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _CryptoShannonChallenge
|
struct CryptoShannonChallenge
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
};
|
};
|
||||||
@ -312,7 +312,7 @@ struct _CryptoShannonChallenge
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct _CryptoRc4Sha1HmacChallenge
|
struct CryptoRc4Sha1HmacChallenge
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
};
|
};
|
||||||
@ -321,7 +321,7 @@ struct _CryptoRc4Sha1HmacChallenge
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct _UpgradeRequiredMessage
|
struct UpgradeRequiredMessage
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData upgrade_signed_part;
|
ProtobufCBinaryData upgrade_signed_part;
|
||||||
@ -333,7 +333,7 @@ struct _UpgradeRequiredMessage
|
|||||||
, {0,NULL}, {0,NULL}, NULL }
|
, {0,NULL}, {0,NULL}, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _APLoginFailed
|
struct APLoginFailed
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ErrorCode error_code;
|
ErrorCode error_code;
|
||||||
@ -348,7 +348,7 @@ struct _APLoginFailed
|
|||||||
, ERROR_CODE__ProtocolError, 0, 0, 0, 0, NULL }
|
, ERROR_CODE__ProtocolError, 0, 0, 0, 0, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _ClientResponsePlaintext
|
struct ClientResponsePlaintext
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
LoginCryptoResponseUnion *login_crypto_response;
|
LoginCryptoResponseUnion *login_crypto_response;
|
||||||
@ -360,7 +360,7 @@ struct _ClientResponsePlaintext
|
|||||||
, NULL, NULL, NULL }
|
, NULL, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _LoginCryptoResponseUnion
|
struct LoginCryptoResponseUnion
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
LoginCryptoDiffieHellmanResponse *diffie_hellman;
|
LoginCryptoDiffieHellmanResponse *diffie_hellman;
|
||||||
@ -370,7 +370,7 @@ struct _LoginCryptoResponseUnion
|
|||||||
, NULL }
|
, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _LoginCryptoDiffieHellmanResponse
|
struct LoginCryptoDiffieHellmanResponse
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData hmac;
|
ProtobufCBinaryData hmac;
|
||||||
@ -380,7 +380,7 @@ struct _LoginCryptoDiffieHellmanResponse
|
|||||||
, {0,NULL} }
|
, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _PoWResponseUnion
|
struct PoWResponseUnion
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
PoWHashCashResponse *hash_cash;
|
PoWHashCashResponse *hash_cash;
|
||||||
@ -390,7 +390,7 @@ struct _PoWResponseUnion
|
|||||||
, NULL }
|
, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _PoWHashCashResponse
|
struct PoWHashCashResponse
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
ProtobufCBinaryData hash_suffix;
|
ProtobufCBinaryData hash_suffix;
|
||||||
@ -400,7 +400,7 @@ struct _PoWHashCashResponse
|
|||||||
, {0,NULL} }
|
, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _CryptoResponseUnion
|
struct CryptoResponseUnion
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
CryptoShannonResponse *shannon;
|
CryptoShannonResponse *shannon;
|
||||||
@ -411,7 +411,7 @@ struct _CryptoResponseUnion
|
|||||||
, NULL, NULL }
|
, NULL, NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _CryptoShannonResponse
|
struct CryptoShannonResponse
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
protobuf_c_boolean has_dummy;
|
protobuf_c_boolean has_dummy;
|
||||||
@ -422,7 +422,7 @@ struct _CryptoShannonResponse
|
|||||||
, 0, 0 }
|
, 0, 0 }
|
||||||
|
|
||||||
|
|
||||||
struct _CryptoRc4Sha1HmacResponse
|
struct CryptoRc4Sha1HmacResponse
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
protobuf_c_boolean has_dummy;
|
protobuf_c_boolean has_dummy;
|
||||||
@ -1073,4 +1073,4 @@ extern const ProtobufCMessageDescriptor crypto_rc4_sha1_hmac_response__descripto
|
|||||||
PROTOBUF_C__END_DECLS
|
PROTOBUF_C__END_DECLS
|
||||||
|
|
||||||
|
|
||||||
#endif /* PROTOBUF_C_proto_2fkeyexchange_2eproto__INCLUDED */
|
#endif /* PROTOBUF_C_keyexchange_2eproto__INCLUDED */
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
||||||
/* Generated from: proto/mercury.proto */
|
/* Generated from: mercury.proto */
|
||||||
|
|
||||||
/* Do not generate deprecated warnings for self */
|
/* Do not generate deprecated warnings for self */
|
||||||
#ifndef PROTOBUF_C__NO_DEPRECATED
|
#ifndef PROTOBUF_C__NO_DEPRECATED
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
/* Generated by the protocol buffer compiler. DO NOT EDIT! */
|
||||||
/* Generated from: proto/mercury.proto */
|
/* Generated from: mercury.proto */
|
||||||
|
|
||||||
#ifndef PROTOBUF_C_proto_2fmercury_2eproto__INCLUDED
|
#ifndef PROTOBUF_C_mercury_2eproto__INCLUDED
|
||||||
#define PROTOBUF_C_proto_2fmercury_2eproto__INCLUDED
|
#define PROTOBUF_C_mercury_2eproto__INCLUDED
|
||||||
|
|
||||||
#include <protobuf-c/protobuf-c.h>
|
#include <protobuf-c/protobuf-c.h>
|
||||||
|
|
||||||
@ -10,17 +10,17 @@ PROTOBUF_C__BEGIN_DECLS
|
|||||||
|
|
||||||
#if PROTOBUF_C_VERSION_NUMBER < 1000000
|
#if PROTOBUF_C_VERSION_NUMBER < 1000000
|
||||||
# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
|
# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
|
||||||
#elif 1003003 < PROTOBUF_C_MIN_COMPILER_VERSION
|
#elif 1004001 < PROTOBUF_C_MIN_COMPILER_VERSION
|
||||||
# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
|
# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
typedef struct _MercuryMultiGetRequest MercuryMultiGetRequest;
|
typedef struct MercuryMultiGetRequest MercuryMultiGetRequest;
|
||||||
typedef struct _MercuryMultiGetReply MercuryMultiGetReply;
|
typedef struct MercuryMultiGetReply MercuryMultiGetReply;
|
||||||
typedef struct _MercuryRequest MercuryRequest;
|
typedef struct MercuryRequest MercuryRequest;
|
||||||
typedef struct _MercuryReply MercuryReply;
|
typedef struct MercuryReply MercuryReply;
|
||||||
typedef struct _Header Header;
|
typedef struct Header Header;
|
||||||
typedef struct _UserField UserField;
|
typedef struct UserField UserField;
|
||||||
|
|
||||||
|
|
||||||
/* --- enums --- */
|
/* --- enums --- */
|
||||||
@ -34,7 +34,7 @@ typedef enum _MercuryReply__CachePolicy {
|
|||||||
|
|
||||||
/* --- messages --- */
|
/* --- messages --- */
|
||||||
|
|
||||||
struct _MercuryMultiGetRequest
|
struct MercuryMultiGetRequest
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
size_t n_request;
|
size_t n_request;
|
||||||
@ -45,7 +45,7 @@ struct _MercuryMultiGetRequest
|
|||||||
, 0,NULL }
|
, 0,NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _MercuryMultiGetReply
|
struct MercuryMultiGetReply
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
size_t n_reply;
|
size_t n_reply;
|
||||||
@ -56,7 +56,7 @@ struct _MercuryMultiGetReply
|
|||||||
, 0,NULL }
|
, 0,NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _MercuryRequest
|
struct MercuryRequest
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
char *uri;
|
char *uri;
|
||||||
@ -71,7 +71,7 @@ struct _MercuryRequest
|
|||||||
, NULL, NULL, 0, {0,NULL}, 0, {0,NULL} }
|
, NULL, NULL, 0, {0,NULL}, 0, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _MercuryReply
|
struct MercuryReply
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
protobuf_c_boolean has_status_code;
|
protobuf_c_boolean has_status_code;
|
||||||
@ -92,7 +92,7 @@ struct _MercuryReply
|
|||||||
, 0, 0, NULL, 0, MERCURY_REPLY__CACHE_POLICY__CACHE_NO, 0, 0, 0, {0,NULL}, NULL, 0, {0,NULL} }
|
, 0, 0, NULL, 0, MERCURY_REPLY__CACHE_POLICY__CACHE_NO, 0, 0, 0, {0,NULL}, NULL, 0, {0,NULL} }
|
||||||
|
|
||||||
|
|
||||||
struct _Header
|
struct Header
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
char *uri;
|
char *uri;
|
||||||
@ -108,7 +108,7 @@ struct _Header
|
|||||||
, NULL, NULL, NULL, 0, 0, 0,NULL }
|
, NULL, NULL, NULL, 0, 0, 0,NULL }
|
||||||
|
|
||||||
|
|
||||||
struct _UserField
|
struct UserField
|
||||||
{
|
{
|
||||||
ProtobufCMessage base;
|
ProtobufCMessage base;
|
||||||
char *key;
|
char *key;
|
||||||
@ -271,4 +271,4 @@ extern const ProtobufCMessageDescriptor user_field__descriptor;
|
|||||||
PROTOBUF_C__END_DECLS
|
PROTOBUF_C__END_DECLS
|
||||||
|
|
||||||
|
|
||||||
#endif /* PROTOBUF_C_proto_2fmercury_2eproto__INCLUDED */
|
#endif /* PROTOBUF_C_mercury_2eproto__INCLUDED */
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,266 +1,318 @@
|
|||||||
syntax = "proto2";
|
syntax = "proto2";
|
||||||
|
|
||||||
message TopTracks {
|
package spotify.metadata;
|
||||||
optional string country = 0x1;
|
|
||||||
repeated Track track = 0x2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ActivityPeriod {
|
|
||||||
optional sint32 start_year = 0x1;
|
|
||||||
optional sint32 end_year = 0x2;
|
|
||||||
optional sint32 decade = 0x3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Artist {
|
message Artist {
|
||||||
optional bytes gid = 0x1;
|
optional bytes gid = 1;
|
||||||
optional string name = 0x2;
|
optional string name = 2;
|
||||||
optional sint32 popularity = 0x3;
|
optional sint32 popularity = 3;
|
||||||
repeated TopTracks top_track = 0x4;
|
repeated TopTracks top_track = 4;
|
||||||
repeated AlbumGroup album_group = 0x5;
|
repeated AlbumGroup album_group = 5;
|
||||||
repeated AlbumGroup single_group = 0x6;
|
repeated AlbumGroup single_group = 6;
|
||||||
repeated AlbumGroup compilation_group = 0x7;
|
repeated AlbumGroup compilation_group = 7;
|
||||||
repeated AlbumGroup appears_on_group = 0x8;
|
repeated AlbumGroup appears_on_group = 8;
|
||||||
repeated string genre = 0x9;
|
repeated string genre = 9;
|
||||||
repeated ExternalId external_id = 0xa;
|
repeated ExternalId external_id = 10;
|
||||||
repeated Image portrait = 0xb;
|
repeated Image portrait = 11;
|
||||||
repeated Biography biography = 0xc;
|
repeated Biography biography = 12;
|
||||||
repeated ActivityPeriod activity_period = 0xd;
|
repeated ActivityPeriod activity_period = 13;
|
||||||
repeated Restriction restriction = 0xe;
|
repeated Restriction restriction = 14;
|
||||||
repeated Artist related = 0xf;
|
repeated Artist related = 15;
|
||||||
optional bool is_portrait_album_cover = 0x10;
|
optional bool is_portrait_album_cover = 16;
|
||||||
optional ImageGroup portrait_group = 0x11;
|
optional ImageGroup portrait_group = 17;
|
||||||
}
|
repeated SalePeriod sale_period = 18;
|
||||||
|
repeated Availability availability = 20;
|
||||||
message AlbumGroup {
|
|
||||||
repeated Album album = 0x1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Date {
|
|
||||||
optional sint32 year = 0x1;
|
|
||||||
optional sint32 month = 0x2;
|
|
||||||
optional sint32 day = 0x3;
|
|
||||||
optional sint32 hour = 0x4;
|
|
||||||
optional sint32 minute = 0x5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message Album {
|
message Album {
|
||||||
optional bytes gid = 0x1;
|
optional bytes gid = 1;
|
||||||
optional string name = 0x2;
|
optional string name = 2;
|
||||||
repeated Artist artist = 0x3;
|
repeated Artist artist = 3;
|
||||||
optional Type typ = 0x4;
|
|
||||||
enum Type {
|
optional Type type = 4;
|
||||||
ALBUM = 0x1;
|
enum Type {
|
||||||
SINGLE = 0x2;
|
ALBUM = 1;
|
||||||
COMPILATION = 0x3;
|
SINGLE = 2;
|
||||||
EP = 0x4;
|
COMPILATION = 3;
|
||||||
}
|
EP = 4;
|
||||||
optional string label = 0x5;
|
AUDIOBOOK = 5;
|
||||||
optional Date date = 0x6;
|
PODCAST = 6;
|
||||||
optional sint32 popularity = 0x7;
|
}
|
||||||
repeated string genre = 0x8;
|
|
||||||
repeated Image cover = 0x9;
|
optional string label = 5;
|
||||||
repeated ExternalId external_id = 0xa;
|
optional Date date = 6;
|
||||||
repeated Disc disc = 0xb;
|
optional sint32 popularity = 7;
|
||||||
repeated string review = 0xc;
|
repeated string genre = 8;
|
||||||
repeated Copyright copyright = 0xd;
|
repeated Image cover = 9;
|
||||||
repeated Restriction restriction = 0xe;
|
repeated ExternalId external_id = 10;
|
||||||
repeated Album related = 0xf;
|
repeated Disc disc = 11;
|
||||||
repeated SalePeriod sale_period = 0x10;
|
repeated string review = 12;
|
||||||
optional ImageGroup cover_group = 0x11;
|
repeated Copyright copyright = 13;
|
||||||
|
repeated Restriction restriction = 14;
|
||||||
|
repeated Album related = 15;
|
||||||
|
repeated SalePeriod sale_period = 16;
|
||||||
|
optional ImageGroup cover_group = 17;
|
||||||
|
optional string original_title = 18;
|
||||||
|
optional string version_title = 19;
|
||||||
|
optional string type_str = 20;
|
||||||
|
repeated Availability availability = 23;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Track {
|
message Track {
|
||||||
optional bytes gid = 0x1;
|
optional bytes gid = 1;
|
||||||
optional string name = 0x2;
|
optional string name = 2;
|
||||||
optional Album album = 0x3;
|
optional Album album = 3;
|
||||||
repeated Artist artist = 0x4;
|
repeated Artist artist = 4;
|
||||||
optional sint32 number = 0x5;
|
optional sint32 number = 5;
|
||||||
optional sint32 disc_number = 0x6;
|
optional sint32 disc_number = 6;
|
||||||
optional sint32 duration = 0x7;
|
optional sint32 duration = 7;
|
||||||
optional sint32 popularity = 0x8;
|
optional sint32 popularity = 8;
|
||||||
optional bool explicit = 0x9;
|
optional bool explicit = 9;
|
||||||
repeated ExternalId external_id = 0xa;
|
repeated ExternalId external_id = 10;
|
||||||
repeated Restriction restriction = 0xb;
|
repeated Restriction restriction = 11;
|
||||||
repeated AudioFile file = 0xc;
|
repeated AudioFile file = 12;
|
||||||
repeated Track alternative = 0xd;
|
repeated Track alternative = 13;
|
||||||
repeated SalePeriod sale_period = 0xe;
|
repeated SalePeriod sale_period = 14;
|
||||||
repeated AudioFile preview = 0xf;
|
repeated AudioFile preview = 15;
|
||||||
|
repeated string tags = 16;
|
||||||
|
optional int64 earliest_live_timestamp = 17;
|
||||||
|
optional bool has_lyrics = 18;
|
||||||
|
repeated Availability availability = 19;
|
||||||
|
optional Licensor licensor = 21;
|
||||||
|
repeated string language_of_performance = 22;
|
||||||
|
repeated ContentRating content_rating = 25;
|
||||||
|
optional string original_title = 27;
|
||||||
|
optional string version_title = 28;
|
||||||
|
repeated ArtistWithRole artist_with_role = 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Image {
|
message ArtistWithRole {
|
||||||
optional bytes file_id = 0x1;
|
optional bytes artist_gid = 1;
|
||||||
optional Size size = 0x2;
|
optional string artist_name = 2;
|
||||||
enum Size {
|
|
||||||
DEFAULT = 0x0;
|
optional ArtistRole role = 3;
|
||||||
SMALL = 0x1;
|
enum ArtistRole {
|
||||||
LARGE = 0x2;
|
ARTIST_ROLE_UNKNOWN = 0;
|
||||||
XLARGE = 0x3;
|
ARTIST_ROLE_MAIN_ARTIST = 1;
|
||||||
}
|
ARTIST_ROLE_FEATURED_ARTIST = 2;
|
||||||
optional sint32 width = 0x3;
|
ARTIST_ROLE_REMIXER = 3;
|
||||||
optional sint32 height = 0x4;
|
ARTIST_ROLE_ACTOR = 4;
|
||||||
|
ARTIST_ROLE_COMPOSER = 5;
|
||||||
|
ARTIST_ROLE_CONDUCTOR = 6;
|
||||||
|
ARTIST_ROLE_ORCHESTRA = 7;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message ImageGroup {
|
|
||||||
repeated Image image = 0x1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Biography {
|
|
||||||
optional string text = 0x1;
|
|
||||||
repeated Image portrait = 0x2;
|
|
||||||
repeated ImageGroup portrait_group = 0x3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Disc {
|
|
||||||
optional sint32 number = 0x1;
|
|
||||||
optional string name = 0x2;
|
|
||||||
repeated Track track = 0x3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Copyright {
|
|
||||||
optional Type typ = 0x1;
|
|
||||||
enum Type {
|
|
||||||
P = 0x0;
|
|
||||||
C = 0x1;
|
|
||||||
}
|
|
||||||
optional string text = 0x2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Restriction {
|
|
||||||
enum Catalogue {
|
|
||||||
AD = 0;
|
|
||||||
SUBSCRIPTION = 1;
|
|
||||||
CATALOGUE_ALL = 2;
|
|
||||||
SHUFFLE = 3;
|
|
||||||
COMMERCIAL = 4;
|
|
||||||
}
|
|
||||||
enum Type {
|
|
||||||
STREAMING = 0x0;
|
|
||||||
}
|
|
||||||
repeated Catalogue catalogue = 0x1;
|
|
||||||
optional string countries_allowed = 0x2;
|
|
||||||
optional string countries_forbidden = 0x3;
|
|
||||||
optional Type typ = 0x4;
|
|
||||||
|
|
||||||
repeated string catalogue_str = 0x5;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Availability {
|
|
||||||
repeated string catalogue_str = 0x1;
|
|
||||||
optional Date start = 0x2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message SalePeriod {
|
|
||||||
repeated Restriction restriction = 0x1;
|
|
||||||
optional Date start = 0x2;
|
|
||||||
optional Date end = 0x3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ExternalId {
|
|
||||||
optional string typ = 0x1;
|
|
||||||
optional string id = 0x2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message AudioFile {
|
|
||||||
optional bytes file_id = 0x1;
|
|
||||||
optional Format format = 0x2;
|
|
||||||
enum Format {
|
|
||||||
OGG_VORBIS_96 = 0x0;
|
|
||||||
OGG_VORBIS_160 = 0x1;
|
|
||||||
OGG_VORBIS_320 = 0x2;
|
|
||||||
MP3_256 = 0x3;
|
|
||||||
MP3_320 = 0x4;
|
|
||||||
MP3_160 = 0x5;
|
|
||||||
MP3_96 = 0x6;
|
|
||||||
MP3_160_ENC = 0x7;
|
|
||||||
// v4
|
|
||||||
// AAC_24 = 0x8;
|
|
||||||
// AAC_48 = 0x9;
|
|
||||||
MP4_128_DUAL = 0x8;
|
|
||||||
OTHER3 = 0x9;
|
|
||||||
AAC_160 = 0xa;
|
|
||||||
AAC_320 = 0xb;
|
|
||||||
MP4_128 = 0xc;
|
|
||||||
OTHER5 = 0xd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
message VideoFile {
|
|
||||||
optional bytes file_id = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Podcast Protos
|
|
||||||
message Show {
|
message Show {
|
||||||
|
optional bytes gid = 1;
|
||||||
|
optional string name = 2;
|
||||||
|
optional string description = 64;
|
||||||
|
optional sint32 deprecated_popularity = 65;
|
||||||
|
optional string publisher = 66;
|
||||||
|
optional string language = 67;
|
||||||
|
optional bool explicit = 68;
|
||||||
|
optional ImageGroup cover_image = 69;
|
||||||
|
repeated Episode episode = 70;
|
||||||
|
repeated Copyright copyright = 71;
|
||||||
|
repeated Restriction restriction = 72;
|
||||||
|
repeated string keyword = 73;
|
||||||
|
|
||||||
|
optional MediaType media_type = 74;
|
||||||
enum MediaType {
|
enum MediaType {
|
||||||
MIXED = 0;
|
MIXED = 0;
|
||||||
AUDIO = 1;
|
AUDIO = 1;
|
||||||
VIDEO = 2;
|
VIDEO = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
optional ConsumptionOrder consumption_order = 75;
|
||||||
enum ConsumptionOrder {
|
enum ConsumptionOrder {
|
||||||
SEQUENTIAL = 1;
|
SEQUENTIAL = 1;
|
||||||
EPISODIC = 2;
|
EPISODIC = 2;
|
||||||
RECENT = 3;
|
RECENT = 3;
|
||||||
}
|
|
||||||
enum PassthroughEnum {
|
|
||||||
UNKNOWN = 0;
|
|
||||||
NONE = 1;
|
|
||||||
ALLOWED = 2;
|
|
||||||
}
|
}
|
||||||
optional bytes gid = 0x1;
|
|
||||||
optional string name = 0x2;
|
repeated Availability availability = 78;
|
||||||
optional string description = 0x40;
|
optional string trailer_uri = 83;
|
||||||
optional sint32 deprecated_popularity = 0x41;
|
optional bool music_and_talk = 85;
|
||||||
optional string publisher = 0x42;
|
optional bool is_audiobook = 89;
|
||||||
optional string language = 0x43;
|
|
||||||
optional bool explicit = 0x44;
|
|
||||||
optional ImageGroup covers = 0x45;
|
|
||||||
repeated Episode episode = 0x46;
|
|
||||||
repeated Copyright copyright = 0x47;
|
|
||||||
repeated Restriction restriction = 0x48;
|
|
||||||
repeated string keyword = 0x49;
|
|
||||||
optional MediaType media_type = 0x4A;
|
|
||||||
optional ConsumptionOrder consumption_order = 0x4B;
|
|
||||||
optional bool interpret_restriction_using_geoip = 0x4C;
|
|
||||||
repeated Availability availability = 0x4E;
|
|
||||||
optional string country_of_origin = 0x4F;
|
|
||||||
repeated Category categories = 0x50;
|
|
||||||
optional PassthroughEnum passthrough = 0x51;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message Episode {
|
message Episode {
|
||||||
optional bytes gid = 0x1;
|
optional bytes gid = 1;
|
||||||
optional string name = 0x2;
|
optional string name = 2;
|
||||||
optional sint32 duration = 0x7;
|
optional sint32 duration = 7;
|
||||||
optional sint32 popularity = 0x8;
|
repeated AudioFile audio = 12;
|
||||||
repeated AudioFile file = 0xc;
|
optional string description = 64;
|
||||||
optional string description = 0x40;
|
optional sint32 number = 65;
|
||||||
optional sint32 number = 0x41;
|
optional Date publish_time = 66;
|
||||||
optional Date publish_time = 0x42;
|
optional sint32 deprecated_popularity = 67;
|
||||||
optional sint32 deprecated_popularity = 0x43;
|
optional ImageGroup cover_image = 68;
|
||||||
optional ImageGroup covers = 0x44;
|
optional string language = 69;
|
||||||
optional string language = 0x45;
|
optional bool explicit = 70;
|
||||||
optional bool explicit = 0x46;
|
optional Show show = 71;
|
||||||
optional Show show = 0x47;
|
repeated VideoFile video = 72;
|
||||||
repeated VideoFile video = 0x48;
|
repeated VideoFile video_preview = 73;
|
||||||
repeated VideoFile video_preview = 0x49;
|
repeated AudioFile audio_preview = 74;
|
||||||
repeated AudioFile audio_preview = 0x4A;
|
repeated Restriction restriction = 75;
|
||||||
repeated Restriction restriction = 0x4B;
|
optional ImageGroup freeze_frame = 76;
|
||||||
optional ImageGroup freeze_frame = 0x4C;
|
repeated string keyword = 77;
|
||||||
repeated string keyword = 0x4D;
|
optional bool allow_background_playback = 81;
|
||||||
// Order of these two flags might be wrong!
|
repeated Availability availability = 82;
|
||||||
optional bool suppress_monetization = 0x4E;
|
optional string external_url = 83;
|
||||||
optional bool interpret_restriction_using_geoip = 0x4F;
|
|
||||||
|
optional EpisodeType type = 87;
|
||||||
optional bool allow_background_playback = 0x51;
|
enum EpisodeType {
|
||||||
repeated Availability availability = 0x52;
|
FULL = 0;
|
||||||
optional string external_url = 0x53;
|
TRAILER = 1;
|
||||||
optional OriginalAudio original_audio = 0x54;
|
BONUS = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
optional bool music_and_talk = 91;
|
||||||
|
repeated ContentRating content_rating = 95;
|
||||||
|
optional bool is_audiobook_chapter = 96;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Category {
|
message Licensor {
|
||||||
optional string name = 0x1;
|
optional bytes uuid = 1;
|
||||||
repeated Category subcategories = 0x2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message OriginalAudio {
|
message TopTracks {
|
||||||
optional bytes uuid = 0x1;
|
optional string country = 1;
|
||||||
|
repeated Track track = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ActivityPeriod {
|
||||||
|
optional sint32 start_year = 1;
|
||||||
|
optional sint32 end_year = 2;
|
||||||
|
optional sint32 decade = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message AlbumGroup {
|
||||||
|
repeated Album album = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Date {
|
||||||
|
optional sint32 year = 1;
|
||||||
|
optional sint32 month = 2;
|
||||||
|
optional sint32 day = 3;
|
||||||
|
optional sint32 hour = 4;
|
||||||
|
optional sint32 minute = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Image {
|
||||||
|
optional bytes file_id = 1;
|
||||||
|
|
||||||
|
optional Size size = 2;
|
||||||
|
enum Size {
|
||||||
|
DEFAULT = 0;
|
||||||
|
SMALL = 1;
|
||||||
|
LARGE = 2;
|
||||||
|
XLARGE = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
optional sint32 width = 3;
|
||||||
|
optional sint32 height = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ImageGroup {
|
||||||
|
repeated Image image = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Biography {
|
||||||
|
optional string text = 1;
|
||||||
|
repeated Image portrait = 2;
|
||||||
|
repeated ImageGroup portrait_group = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Disc {
|
||||||
|
optional sint32 number = 1;
|
||||||
|
optional string name = 2;
|
||||||
|
repeated Track track = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Copyright {
|
||||||
|
optional Type type = 1;
|
||||||
|
enum Type {
|
||||||
|
P = 0;
|
||||||
|
C = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
optional string text = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Restriction {
|
||||||
|
repeated Catalogue catalogue = 1;
|
||||||
|
enum Catalogue {
|
||||||
|
AD = 0;
|
||||||
|
SUBSCRIPTION = 1;
|
||||||
|
CATALOGUE_ALL = 2;
|
||||||
|
SHUFFLE = 3;
|
||||||
|
COMMERCIAL = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
optional Type type = 4;
|
||||||
|
enum Type {
|
||||||
|
STREAMING = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
repeated string catalogue_str = 5;
|
||||||
|
|
||||||
|
oneof country_restriction {
|
||||||
|
string countries_allowed = 2;
|
||||||
|
string countries_forbidden = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message Availability {
|
||||||
|
repeated string catalogue_str = 1;
|
||||||
|
optional Date start = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SalePeriod {
|
||||||
|
repeated Restriction restriction = 1;
|
||||||
|
optional Date start = 2;
|
||||||
|
optional Date end = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ExternalId {
|
||||||
|
optional string type = 1;
|
||||||
|
optional string id = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message AudioFile {
|
||||||
|
optional bytes file_id = 1;
|
||||||
|
|
||||||
|
optional Format format = 2;
|
||||||
|
enum Format {
|
||||||
|
OGG_VORBIS_96 = 0;
|
||||||
|
OGG_VORBIS_160 = 1;
|
||||||
|
OGG_VORBIS_320 = 2;
|
||||||
|
MP3_256 = 3;
|
||||||
|
MP3_320 = 4;
|
||||||
|
MP3_160 = 5;
|
||||||
|
MP3_96 = 6;
|
||||||
|
MP3_160_ENC = 7;
|
||||||
|
AAC_24 = 8;
|
||||||
|
AAC_48 = 9;
|
||||||
|
MP4_128 = 10;
|
||||||
|
MP4_128_DUAL = 11;
|
||||||
|
MP4_128_CBCS = 12;
|
||||||
|
MP4_256 = 13;
|
||||||
|
MP4_256_DUAL = 14;
|
||||||
|
MP4_256_CBCS = 15;
|
||||||
|
FLAC_FLAC = 16;
|
||||||
|
XHE_AAC_24 = 18;
|
||||||
|
XHE_AAC_16 = 19;
|
||||||
|
XHE_AAC_12 = 20;
|
||||||
|
FLAC_FLAC_24BIT = 22;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message VideoFile {
|
||||||
|
optional bytes file_id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ContentRating {
|
||||||
|
optional string country = 1;
|
||||||
|
repeated string tag = 2;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user