From a2103963b4b46d7fbefa73ceccd16a01416bcd5d Mon Sep 17 00:00:00 2001 From: LuanRT Date: Sat, 23 Jul 2022 02:45:47 -0300 Subject: [PATCH] feat: add `Studio#setThumbnail()` method (#111) * feat: add support for protobuf payloads to `Actions#execute()` * chore: compile proto definitions file * feat(wip): add `Studio` class and implement `Studio#setThumbnail()` method * fix: check if parameters are missing --- src/Innertube.ts | 5 +- src/core/Actions.ts | 52 +- src/core/Studio.ts | 36 + src/parser/index.ts | 2 +- src/proto/index.js | 26 + src/proto/messages.js | 5878 ++++++++++++++++++++------------------- src/utils/HTTPClient.ts | 2 +- 7 files changed, 3136 insertions(+), 2865 deletions(-) create mode 100644 src/core/Studio.ts diff --git a/src/Innertube.ts b/src/Innertube.ts index e6df36b3..78ec476b 100644 --- a/src/Innertube.ts +++ b/src/Innertube.ts @@ -12,6 +12,7 @@ import VideoInfo, { DownloadOptions, FormatOptions } from './parser/youtube/Vide import Feed from './core/Feed'; import YTMusic from './core/Music'; +import Studio from './core/Studio'; import AccountManager from './core/AccountManager'; import PlaylistManager from './core/PlaylistManager'; import InteractionManager from './core/InteractionManager'; @@ -49,6 +50,7 @@ class Innertube { playlist; interact; music; + studio; actions; constructor(session: Session) { @@ -57,6 +59,7 @@ class Innertube { this.playlist = new PlaylistManager(this.session.actions); this.interact = new InteractionManager(this.session.actions); this.music = new YTMusic(this.session); + this.studio = new Studio(this.session); this.actions = this.session.actions; } @@ -243,4 +246,4 @@ class Innertube { } } -export default Innertube; \ No newline at end of file +export default Innertube; diff --git a/src/core/Actions.ts b/src/core/Actions.ts index 975e8b76..19d5318f 100644 --- a/src/core/Actions.ts +++ b/src/core/Actions.ts @@ -63,11 +63,11 @@ class Actions { /** * Mimmics the Axios API using Fetch's Response object. */ - async #wrap(response: Response) { + async #wrap(response: Response, protobuf?: boolean) { return { success: response.ok, status_code: response.status, - data: await response.json() + data: protobuf ? await response.text() : JSON.parse(await response.text()) }; } @@ -673,35 +673,43 @@ class Actions { * @param action - endpoint * @param args - call arguments */ - async execute(action: string, args: { [key: string]: any; parse: true; }) : Promise; - async execute(action: string, args: { [key: string]: any; parse?: false; }) : Promise; - async execute(action: string, args: { [key: string]: any; parse?: boolean; }): Promise { - const data = { ...args }; + async execute(action: string, args: { [key: string]: any; parse: true; protobuf?: false; serialized_data?: any }) : Promise; + async execute(action: string, args: { [key: string]: any; parse?: false; protobuf?: true; serialized_data?: any }) : Promise; + async execute(action: string, args: { [key: string]: any; parse?: boolean; protobuf?: boolean; serialized_data?: any }): Promise { + let data; - if (Reflect.has(data, 'parse')) - delete data.parse; + if (!args.protobuf) { + data = { ...args }; - if (Reflect.has(data, 'request')) - delete data.request; + if (Reflect.has(data, 'parse')) + delete data.parse; - if (Reflect.has(data, 'clientActions')) - delete data.clientActions; + if (Reflect.has(data, 'request')) + delete data.request; - if (Reflect.has(data, 'action')) { - data.actions = [ data.action ]; - delete data.action; - } + if (Reflect.has(data, 'clientActions')) + delete data.clientActions; - if (Reflect.has(data, 'token')) { - data.continuation = data.token; - delete data.token; + if (Reflect.has(data, 'action')) { + data.actions = [ data.action ]; + delete data.action; + } + + if (Reflect.has(data, 'token')) { + data.continuation = data.token; + delete data.token; + } + } else { + data = args.serialized_data; } const response = await this.#session.http.fetch(action, { method: 'POST', - body: JSON.stringify(data), + body: args.protobuf ? data : JSON.stringify(data), headers: { - 'Content-Type': 'application/json' + 'Content-Type': args.protobuf ? + 'application/x-protobuf' : + 'application/json' } }); @@ -709,7 +717,7 @@ class Actions { return Parser.parseResponse(await response.json()); } - return this.#wrap(response); + return this.#wrap(response, args.protobuf); } #needsLogin(id: string) { diff --git a/src/core/Studio.ts b/src/core/Studio.ts new file mode 100644 index 00000000..4f02140a --- /dev/null +++ b/src/core/Studio.ts @@ -0,0 +1,36 @@ +import Proto from '../proto'; +import Session from './Session'; +import { AxioslikeResponse } from './Actions'; +import { MissingParamError } from '../utils/Utils'; + +class Studio { + #session; + + constructor(session: Session) { + this.#session = session; + } + + /** + * Uploads a custom thumbnail and sets it for a video. + * @example + * ```ts + * const buffer = fs.readFileSync('./my_awesome_thumbnail.jpg'); + * const response = await yt.studio.setThumbnail(video_id, buffer); + * ``` + */ + async setThumbnail(video_id: string, buffer: Uint8Array): Promise { + if (!video_id || !buffer) + throw new MissingParamError('One or more parameters are missing.'); + + const payload = Proto.encodeCustomThumbnailPayload(video_id, buffer); + + const response = await this.#session.actions.execute('/video_manager/metadata_update', { + protobuf: true, + serialized_data: payload + }); + + return response; + } +} + +export default Studio; diff --git a/src/parser/index.ts b/src/parser/index.ts index 4aadc937..abbc55d2 100644 --- a/src/parser/index.ts +++ b/src/parser/index.ts @@ -188,7 +188,7 @@ export default class Parser { status: data.playabilityStatus.status as string, error_screen: Parser.parse(data.playabilityStatus.errorScreen), embeddable: !!data.playabilityStatus.playableInEmbed || false, - reason: `${data.reason}` || '' + reason: data.playabilityStatus?.reason || '' } : undefined, streaming_data: data.streamingData ? { expires: new Date(Date.now() + parseInt(data.streamingData.expiresInSeconds) * 1000), diff --git a/src/proto/index.js b/src/proto/index.js index df5d234d..fe0ddd03 100644 --- a/src/proto/index.js +++ b/src/proto/index.js @@ -1,4 +1,5 @@ import * as messages from './messages'; +import { CLIENTS } from '../utils/Constants'; class Proto { /** @@ -284,6 +285,31 @@ class Proto { return encodeURIComponent(Buffer.from(buf).toString('base64')); } + /** + * Encodes a custom thumbnail payload. + */ + static encodeCustomThumbnailPayload(video_id, bytes) { + const data = { + context: { + client: { + unkparam: 14, + client_name: CLIENTS.ANDROID.NAME, + client_version: CLIENTS.ANDROID.VERSION + } + }, + target: video_id, + video_settings: { + type: 3, + thumbnail: { + image_data: bytes + } + } + }; + + const buf = messages.InnertubePayload.encode(data); + return Buffer.from(buf); + } + /** * Encodes sound info parameters. * @param {string} id diff --git a/src/proto/messages.js b/src/proto/messages.js index 8946e47c..b52345eb 100644 --- a/src/proto/messages.js +++ b/src/proto/messages.js @@ -1,2915 +1,3113 @@ +// This file is auto generated by the protocol-buffers compiler + +/* eslint-disable quotes */ +/* eslint-disable indent */ +/* eslint-disable no-redeclare */ +/* eslint-disable camelcase */ + +// Remember to `npm install --save protocol-buffers-encodings` import * as encodings from "protocol-buffers-encodings"; -var varint = encodings.varint; -var skip = encodings.skip; + +var varint = encodings.varint +var skip = encodings.skip + var VisitorData = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var ChannelAnalytics = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var InnertubePayload = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var SoundInfoParams = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var NotificationPreferences = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var LiveMessageParams = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var GetCommentsSectionParams = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var CreateCommentParams = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var CreateCommentReplyParams = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var PeformCommentActionParams = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var MusicSearchFilter = { - buffer: true, - encodingLength: null, - encode: null, - decode: null -}; + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + var SearchFilter = { + buffer: true, + encodingLength: null, + encode: null, + decode: null +} + +defineVisitorData() +defineChannelAnalytics() +defineInnertubePayload() +defineSoundInfoParams() +defineNotificationPreferences() +defineLiveMessageParams() +defineGetCommentsSectionParams() +defineCreateCommentParams() +defineCreateCommentReplyParams() +definePeformCommentActionParams() +defineMusicSearchFilter() +defineSearchFilter() + +function defineVisitorData () { + VisitorData.encodingLength = encodingLength + VisitorData.encode = encode + VisitorData.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.id)) { + var len = encodings.string.encodingLength(obj.id) + length += 1 + len + } + if (defined(obj.timestamp)) { + var len = encodings.int32.encodingLength(obj.timestamp) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.id)) { + buf[offset++] = 10 + encodings.string.encode(obj.id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.timestamp)) { + buf[offset++] = 40 + encodings.int32.encode(obj.timestamp, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + id: "", + timestamp: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 5: + obj.timestamp = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } +} + +function defineChannelAnalytics () { + var Params = ChannelAnalytics.Params = { buffer: true, encodingLength: null, encode: null, decode: null -}; -defineVisitorData(); -defineChannelAnalytics(); -defineInnertubePayload(); -defineSoundInfoParams(); -defineNotificationPreferences(); -defineLiveMessageParams(); -defineGetCommentsSectionParams(); -defineCreateCommentParams(); -defineCreateCommentReplyParams(); -definePeformCommentActionParams(); -defineMusicSearchFilter(); -defineSearchFilter(); -function defineVisitorData() { - VisitorData.encodingLength = encodingLength; - VisitorData.encode = encode; - VisitorData.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.id)) { - var len = encodings.string.encodingLength(obj.id); - length += 1 + len; - } - if (defined(obj.timestamp)) { - var len = encodings.int32.encodingLength(obj.timestamp); - length += 1 + len; - } - return length; + } + + defineParams() + + function defineParams () { + Params.encodingLength = encodingLength + Params.encode = encode + Params.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.channel_id)) { + var len = encodings.string.encodingLength(obj.channel_id) + length += 2 + len + } + return length } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.id)) { - buf[offset++] = 10; - encodings.string.encode(obj.id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.timestamp)) { - buf[offset++] = 40; - encodings.int32.encode(obj.timestamp, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.channel_id)) { + buf[offset++] = 202 + buf[offset++] = 62 + encodings.string.encode(obj.channel_id, buf, offset) + offset += encodings.string.encode.bytes + } + encode.bytes = offset - oldOffset + return buf } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - id: "", - timestamp: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 5: - obj.timestamp = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + channel_id: "" + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1001: + obj.channel_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } } + } + + ChannelAnalytics.encodingLength = encodingLength + ChannelAnalytics.encode = encode + ChannelAnalytics.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.params)) { + var len = Params.encodingLength(obj.params) + length += varint.encodingLength(len) + length += 2 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.params)) { + buf[offset++] = 130 + buf[offset++] = 2 + varint.encode(Params.encodingLength(obj.params), buf, offset) + offset += varint.encode.bytes + Params.encode(obj.params, buf, offset) + offset += Params.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + params: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 32: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.params = Params.decode(buf, offset, offset + len) + offset += Params.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } } -function defineChannelAnalytics() { - var Params = ChannelAnalytics.Params = { + +function defineInnertubePayload () { + var Context = InnertubePayload.Context = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + var VideoSettings = InnertubePayload.VideoSettings = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineContext() + defineVideoSettings() + + function defineContext () { + var Client = Context.Client = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineClient() + + function defineClient () { + Client.encodingLength = encodingLength + Client.encode = encode + Client.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.unkparam)) { + var len = encodings.int32.encodingLength(obj.unkparam) + length += 2 + len + } + if (defined(obj.client_version)) { + var len = encodings.string.encodingLength(obj.client_version) + length += 2 + len + } + if (defined(obj.client_name)) { + var len = encodings.string.encodingLength(obj.client_name) + length += 2 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.unkparam)) { + buf[offset++] = 128 + buf[offset++] = 1 + encodings.int32.encode(obj.unkparam, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.client_version)) { + buf[offset++] = 138 + buf[offset++] = 1 + encodings.string.encode(obj.client_version, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.client_name)) { + buf[offset++] = 146 + buf[offset++] = 1 + encodings.string.encode(obj.client_name, buf, offset) + offset += encodings.string.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + unkparam: 0, + client_version: "", + client_name: "" + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 16: + obj.unkparam = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 17: + obj.client_version = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 18: + obj.client_name = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + Context.encodingLength = encodingLength + Context.encode = encode + Context.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.client)) { + var len = Client.encodingLength(obj.client) + length += varint.encodingLength(len) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.client)) { + buf[offset++] = 10 + varint.encode(Client.encodingLength(obj.client), buf, offset) + offset += varint.encode.bytes + Client.encode(obj.client, buf, offset) + offset += Client.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + client: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.client = Client.decode(buf, offset, offset + len) + offset += Client.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + function defineVideoSettings () { + var Thumbnail = VideoSettings.Thumbnail = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineThumbnail() + + function defineThumbnail () { + Thumbnail.encodingLength = encodingLength + Thumbnail.encode = encode + Thumbnail.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.image_data)) { + var len = encodings.bytes.encodingLength(obj.image_data) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.image_data)) { + buf[offset++] = 10 + encodings.bytes.encode(obj.image_data, buf, offset) + offset += encodings.bytes.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + image_data: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.image_data = encodings.bytes.decode(buf, offset) + offset += encodings.bytes.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + VideoSettings.encodingLength = encodingLength + VideoSettings.encode = encode + VideoSettings.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.type)) { + var len = encodings.int32.encodingLength(obj.type) + length += 1 + len + } + if (defined(obj.thumbnail)) { + var len = Thumbnail.encodingLength(obj.thumbnail) + length += varint.encodingLength(len) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.type)) { + buf[offset++] = 8 + encodings.int32.encode(obj.type, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.thumbnail)) { + buf[offset++] = 26 + varint.encode(Thumbnail.encodingLength(obj.thumbnail), buf, offset) + offset += varint.encode.bytes + Thumbnail.encode(obj.thumbnail, buf, offset) + offset += Thumbnail.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + type: 0, + thumbnail: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.type = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 3: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.thumbnail = Thumbnail.decode(buf, offset, offset + len) + offset += Thumbnail.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + InnertubePayload.encodingLength = encodingLength + InnertubePayload.encode = encode + InnertubePayload.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.context)) { + var len = Context.encodingLength(obj.context) + length += varint.encodingLength(len) + length += 1 + len + } + if (defined(obj.target)) { + var len = encodings.string.encodingLength(obj.target) + length += 1 + len + } + if (defined(obj.video_settings)) { + var len = VideoSettings.encodingLength(obj.video_settings) + length += varint.encodingLength(len) + length += 2 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.context)) { + buf[offset++] = 10 + varint.encode(Context.encodingLength(obj.context), buf, offset) + offset += varint.encode.bytes + Context.encode(obj.context, buf, offset) + offset += Context.encode.bytes + } + if (defined(obj.target)) { + buf[offset++] = 18 + encodings.string.encode(obj.target, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.video_settings)) { + buf[offset++] = 162 + buf[offset++] = 1 + varint.encode(VideoSettings.encodingLength(obj.video_settings), buf, offset) + offset += varint.encode.bytes + VideoSettings.encode(obj.video_settings, buf, offset) + offset += VideoSettings.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + context: null, + target: "", + video_settings: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.context = Context.decode(buf, offset, offset + len) + offset += Context.decode.bytes + break + case 2: + obj.target = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 20: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.video_settings = VideoSettings.decode(buf, offset, offset + len) + offset += VideoSettings.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } +} + +function defineSoundInfoParams () { + var Sound = SoundInfoParams.Sound = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineSound() + + function defineSound () { + var Params = Sound.Params = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineParams() + + function defineParams () { + var Ids = Params.Ids = { buffer: true, encodingLength: null, encode: null, decode: null - }; - defineParams(); - function defineParams() { - Params.encodingLength = encodingLength; - Params.encode = encode; - Params.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.channel_id)) { - var len = encodings.string.encodingLength(obj.channel_id); - length += 2 + len; - } - return length; + } + + defineIds() + + function defineIds () { + Ids.encodingLength = encodingLength + Ids.encode = encode + Ids.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.id_1)) { + var len = encodings.string.encodingLength(obj.id_1) + length += 1 + len + } + if (defined(obj.id_2)) { + var len = encodings.string.encodingLength(obj.id_2) + length += 1 + len + } + if (defined(obj.id_3)) { + var len = encodings.string.encodingLength(obj.id_3) + length += 1 + len + } + return length } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.channel_id)) { - buf[offset++] = 202; - buf[offset++] = 62; - encodings.string.encode(obj.channel_id, buf, offset); - offset += encodings.string.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.id_1)) { + buf[offset++] = 10 + encodings.string.encode(obj.id_1, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.id_2)) { + buf[offset++] = 18 + encodings.string.encode(obj.id_2, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.id_3)) { + buf[offset++] = 26 + encodings.string.encode(obj.id_3, buf, offset) + offset += encodings.string.encode.bytes + } + encode.bytes = offset - oldOffset + return buf } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - channel_id: "" - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1001: - obj.channel_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - ChannelAnalytics.encodingLength = encodingLength; - ChannelAnalytics.encode = encode; - ChannelAnalytics.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.params)) { - var len = Params.encodingLength(obj.params); - length += varint.encodingLength(len); - length += 2 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.params)) { - buf[offset++] = 130; - buf[offset++] = 2; - varint.encode(Params.encodingLength(obj.params), buf, offset); - offset += varint.encode.bytes; - Params.encode(obj.params, buf, offset); - offset += Params.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - params: null - }; - while (true) { + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + id_1: "", + id_2: "", + id_3: "" + } + while (true) { if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; + decode.bytes = offset - oldOffset + return obj } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 switch (tag) { - case 32: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.params = Params.decode(buf, offset, offset + len); - offset += Params.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); + case 1: + obj.id_1 = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 2: + obj.id_2 = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 3: + obj.id_3 = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) } + } } - } -} -function defineInnertubePayload() { - var Context = InnertubePayload.Context = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineContext(); - function defineContext() { - var Client = Context.Client = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineClient(); - function defineClient() { - Client.encodingLength = encodingLength; - Client.encode = encode; - Client.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.unkparam)) { - var len = encodings.int32.encodingLength(obj.unkparam); - length += 2 + len; - } - if (defined(obj.client_version)) { - var len = encodings.string.encodingLength(obj.client_version); - length += 2 + len; - } - if (defined(obj.client_name)) { - var len = encodings.string.encodingLength(obj.client_name); - length += 2 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.unkparam)) { - buf[offset++] = 128; - buf[offset++] = 1; - encodings.int32.encode(obj.unkparam, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.client_version)) { - buf[offset++] = 138; - buf[offset++] = 1; - encodings.string.encode(obj.client_version, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.client_name)) { - buf[offset++] = 146; - buf[offset++] = 1; - encodings.string.encode(obj.client_name, buf, offset); - offset += encodings.string.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - unkparam: 0, - client_version: "", - client_name: "" - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 16: - obj.unkparam = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 17: - obj.client_version = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 18: - obj.client_name = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } + } + + Params.encodingLength = encodingLength + Params.encode = encode + Params.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.ids)) { + var len = Ids.encodingLength(obj.ids) + length += varint.encodingLength(len) + length += 1 + len } - Context.encodingLength = encodingLength; - Context.encode = encode; - Context.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.client)) { - var len = Client.encodingLength(obj.client); - length += varint.encodingLength(len); - length += 1 + len; - } - return length; + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.ids)) { + buf[offset++] = 18 + varint.encode(Ids.encodingLength(obj.ids), buf, offset) + offset += varint.encode.bytes + Ids.encode(obj.ids, buf, offset) + offset += Ids.encode.bytes } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.client)) { - buf[offset++] = 10; - varint.encode(Client.encodingLength(obj.client), buf, offset); - offset += varint.encode.bytes; - Client.encode(obj.client, buf, offset); - offset += Client.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - client: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.client = Client.decode(buf, offset, offset + len); - offset += Client.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - InnertubePayload.encodingLength = encodingLength; - InnertubePayload.encode = encode; - InnertubePayload.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.context)) { - var len = Context.encodingLength(obj.context); - length += varint.encodingLength(len); - length += 1 + len; - } - if (defined(obj.target)) { - var len = encodings.string.encodingLength(obj.target); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.context)) { - buf[offset++] = 10; - varint.encode(Context.encodingLength(obj.context), buf, offset); - offset += varint.encode.bytes; - Context.encode(obj.context, buf, offset); - offset += Context.encode.bytes; - } - if (defined(obj.target)) { - buf[offset++] = 18; - encodings.string.encode(obj.target, buf, offset); - offset += encodings.string.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset var obj = { - context: null, - target: "" - }; + ids: null + } while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.context = Context.decode(buf, offset, offset + len); - offset += Context.decode.bytes; - break; - case 2: - obj.target = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 2: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.ids = Ids.decode(buf, offset, offset + len) + offset += Ids.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } } + } } + + Sound.encodingLength = encodingLength + Sound.encode = encode + Sound.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.params)) { + var len = Params.encodingLength(obj.params) + length += varint.encodingLength(len) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.params)) { + buf[offset++] = 10 + varint.encode(Params.encodingLength(obj.params), buf, offset) + offset += varint.encode.bytes + Params.encode(obj.params, buf, offset) + offset += Params.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + params: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.params = Params.decode(buf, offset, offset + len) + offset += Params.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + SoundInfoParams.encodingLength = encodingLength + SoundInfoParams.encode = encode + SoundInfoParams.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.sound)) { + var len = Sound.encodingLength(obj.sound) + length += varint.encodingLength(len) + length += 2 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.sound)) { + buf[offset++] = 242 + buf[offset++] = 5 + varint.encode(Sound.encodingLength(obj.sound), buf, offset) + offset += varint.encode.bytes + Sound.encode(obj.sound, buf, offset) + offset += Sound.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + sound: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 94: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.sound = Sound.decode(buf, offset, offset + len) + offset += Sound.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } } -function defineSoundInfoParams() { - var Sound = SoundInfoParams.Sound = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineSound(); - function defineSound() { - var Params = Sound.Params = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineParams(); - function defineParams() { - var Ids = Params.Ids = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineIds(); - function defineIds() { - Ids.encodingLength = encodingLength; - Ids.encode = encode; - Ids.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.id_1)) { - var len = encodings.string.encodingLength(obj.id_1); - length += 1 + len; - } - if (defined(obj.id_2)) { - var len = encodings.string.encodingLength(obj.id_2); - length += 1 + len; - } - if (defined(obj.id_3)) { - var len = encodings.string.encodingLength(obj.id_3); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.id_1)) { - buf[offset++] = 10; - encodings.string.encode(obj.id_1, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.id_2)) { - buf[offset++] = 18; - encodings.string.encode(obj.id_2, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.id_3)) { - buf[offset++] = 26; - encodings.string.encode(obj.id_3, buf, offset); - offset += encodings.string.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - id_1: "", - id_2: "", - id_3: "" - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.id_1 = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 2: - obj.id_2 = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 3: - obj.id_3 = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - Params.encodingLength = encodingLength; - Params.encode = encode; - Params.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.ids)) { - var len = Ids.encodingLength(obj.ids); - length += varint.encodingLength(len); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.ids)) { - buf[offset++] = 18; - varint.encode(Ids.encodingLength(obj.ids), buf, offset); - offset += varint.encode.bytes; - Ids.encode(obj.ids, buf, offset); - offset += Ids.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - ids: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 2: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.ids = Ids.decode(buf, offset, offset + len); - offset += Ids.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - Sound.encodingLength = encodingLength; - Sound.encode = encode; - Sound.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.params)) { - var len = Params.encodingLength(obj.params); - length += varint.encodingLength(len); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.params)) { - buf[offset++] = 10; - varint.encode(Params.encodingLength(obj.params), buf, offset); - offset += varint.encode.bytes; - Params.encode(obj.params, buf, offset); - offset += Params.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - params: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.params = Params.decode(buf, offset, offset + len); - offset += Params.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } + +function defineNotificationPreferences () { + var Preference = NotificationPreferences.Preference = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + definePreference() + + function definePreference () { + Preference.encodingLength = encodingLength + Preference.encode = encode + Preference.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.index)) { + var len = encodings.int32.encodingLength(obj.index) + length += 1 + len + } + return length } - SoundInfoParams.encodingLength = encodingLength; - SoundInfoParams.encode = encode; - SoundInfoParams.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.sound)) { - var len = Sound.encodingLength(obj.sound); - length += varint.encodingLength(len); - length += 2 + len; - } - return length; + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.index)) { + buf[offset++] = 8 + encodings.int32.encode(obj.index, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.sound)) { - buf[offset++] = 242; - buf[offset++] = 5; - varint.encode(Sound.encodingLength(obj.sound), buf, offset); - offset += varint.encode.bytes; - Sound.encode(obj.sound, buf, offset); - offset += Sound.encode.bytes; + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + index: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - sound: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 94: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.sound = Sound.decode(buf, offset, offset + len); - offset += Sound.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.index = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) } + } } + } + + NotificationPreferences.encodingLength = encodingLength + NotificationPreferences.encode = encode + NotificationPreferences.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.channel_id)) { + var len = encodings.string.encodingLength(obj.channel_id) + length += 1 + len + } + if (defined(obj.pref_id)) { + var len = Preference.encodingLength(obj.pref_id) + length += varint.encodingLength(len) + length += 1 + len + } + if (defined(obj.number_0)) { + var len = encodings.int32.encodingLength(obj.number_0) + length += 1 + len + } + if (defined(obj.number_1)) { + var len = encodings.int32.encodingLength(obj.number_1) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.channel_id)) { + buf[offset++] = 10 + encodings.string.encode(obj.channel_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.pref_id)) { + buf[offset++] = 18 + varint.encode(Preference.encodingLength(obj.pref_id), buf, offset) + offset += varint.encode.bytes + Preference.encode(obj.pref_id, buf, offset) + offset += Preference.encode.bytes + } + if (defined(obj.number_0)) { + buf[offset++] = 24 + encodings.int32.encode(obj.number_0, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.number_1)) { + buf[offset++] = 32 + encodings.int32.encode(obj.number_1, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + channel_id: "", + pref_id: null, + number_0: 0, + number_1: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.channel_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 2: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.pref_id = Preference.decode(buf, offset, offset + len) + offset += Preference.decode.bytes + break + case 3: + obj.number_0 = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 4: + obj.number_1 = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } } -function defineNotificationPreferences() { - var Preference = NotificationPreferences.Preference = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - definePreference(); - function definePreference() { - Preference.encodingLength = encodingLength; - Preference.encode = encode; - Preference.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.index)) { - var len = encodings.int32.encodingLength(obj.index); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.index)) { - buf[offset++] = 8; - encodings.int32.encode(obj.index, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - index: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.index = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } + +function defineLiveMessageParams () { + var Params = LiveMessageParams.Params = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineParams() + + function defineParams () { + var Ids = Params.Ids = { + buffer: true, + encodingLength: null, + encode: null, + decode: null } - NotificationPreferences.encodingLength = encodingLength; - NotificationPreferences.encode = encode; - NotificationPreferences.decode = decode; - function encodingLength(obj) { - var length = 0; + + defineIds() + + function defineIds () { + Ids.encodingLength = encodingLength + Ids.encode = encode + Ids.decode = decode + + function encodingLength (obj) { + var length = 0 if (defined(obj.channel_id)) { - var len = encodings.string.encodingLength(obj.channel_id); - length += 1 + len; + var len = encodings.string.encodingLength(obj.channel_id) + length += 1 + len } - if (defined(obj.pref_id)) { - var len = Preference.encodingLength(obj.pref_id); - length += varint.encodingLength(len); - length += 1 + len; + if (defined(obj.video_id)) { + var len = encodings.string.encodingLength(obj.video_id) + length += 1 + len } - if (defined(obj.number_0)) { - var len = encodings.int32.encodingLength(obj.number_0); - length += 1 + len; - } - if (defined(obj.number_1)) { - var len = encodings.int32.encodingLength(obj.number_1); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset if (defined(obj.channel_id)) { - buf[offset++] = 10; - encodings.string.encode(obj.channel_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.pref_id)) { - buf[offset++] = 18; - varint.encode(Preference.encodingLength(obj.pref_id), buf, offset); - offset += varint.encode.bytes; - Preference.encode(obj.pref_id, buf, offset); - offset += Preference.encode.bytes; - } - if (defined(obj.number_0)) { - buf[offset++] = 24; - encodings.int32.encode(obj.number_0, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.number_1)) { - buf[offset++] = 32; - encodings.int32.encode(obj.number_1, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - channel_id: "", - pref_id: null, - number_0: 0, - number_1: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.channel_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 2: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.pref_id = Preference.decode(buf, offset, offset + len); - offset += Preference.decode.bytes; - break; - case 3: - obj.number_0 = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 4: - obj.number_1 = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } -} -function defineLiveMessageParams() { - var Params = LiveMessageParams.Params = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineParams(); - function defineParams() { - var Ids = Params.Ids = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineIds(); - function defineIds() { - Ids.encodingLength = encodingLength; - Ids.encode = encode; - Ids.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.channel_id)) { - var len = encodings.string.encodingLength(obj.channel_id); - length += 1 + len; - } - if (defined(obj.video_id)) { - var len = encodings.string.encodingLength(obj.video_id); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.channel_id)) { - buf[offset++] = 10; - encodings.string.encode(obj.channel_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.video_id)) { - buf[offset++] = 18; - encodings.string.encode(obj.video_id, buf, offset); - offset += encodings.string.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - channel_id: "", - video_id: "" - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.channel_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 2: - obj.video_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - Params.encodingLength = encodingLength; - Params.encode = encode; - Params.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.ids)) { - var len = Ids.encodingLength(obj.ids); - length += varint.encodingLength(len); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.ids)) { - buf[offset++] = 42; - varint.encode(Ids.encodingLength(obj.ids), buf, offset); - offset += varint.encode.bytes; - Ids.encode(obj.ids, buf, offset); - offset += Ids.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - ids: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 5: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.ids = Ids.decode(buf, offset, offset + len); - offset += Ids.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - LiveMessageParams.encodingLength = encodingLength; - LiveMessageParams.encode = encode; - LiveMessageParams.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.params)) { - var len = Params.encodingLength(obj.params); - length += varint.encodingLength(len); - length += 1 + len; - } - if (defined(obj.number_0)) { - var len = encodings.int32.encodingLength(obj.number_0); - length += 1 + len; - } - if (defined(obj.number_1)) { - var len = encodings.int32.encodingLength(obj.number_1); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.params)) { - buf[offset++] = 10; - varint.encode(Params.encodingLength(obj.params), buf, offset); - offset += varint.encode.bytes; - Params.encode(obj.params, buf, offset); - offset += Params.encode.bytes; - } - if (defined(obj.number_0)) { - buf[offset++] = 16; - encodings.int32.encode(obj.number_0, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.number_1)) { - buf[offset++] = 24; - encodings.int32.encode(obj.number_1, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - params: null, - number_0: 0, - number_1: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.params = Params.decode(buf, offset, offset + len); - offset += Params.decode.bytes; - break; - case 2: - obj.number_0 = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 3: - obj.number_1 = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } -} -function defineGetCommentsSectionParams() { - var Context = GetCommentsSectionParams.Context = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - var Params = GetCommentsSectionParams.Params = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineContext(); - defineParams(); - function defineContext() { - Context.encodingLength = encodingLength; - Context.encode = encode; - Context.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.video_id)) { - var len = encodings.string.encodingLength(obj.video_id); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.video_id)) { - buf[offset++] = 18; - encodings.string.encode(obj.video_id, buf, offset); - offset += encodings.string.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - video_id: "" - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 2: - obj.video_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - function defineParams() { - var Options = Params.Options = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - var RepliesOptions = Params.RepliesOptions = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineOptions(); - defineRepliesOptions(); - function defineOptions() { - Options.encodingLength = encodingLength; - Options.encode = encode; - Options.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.video_id)) { - var len = encodings.string.encodingLength(obj.video_id); - length += 1 + len; - } - if (defined(obj.sort_by)) { - var len = encodings.int32.encodingLength(obj.sort_by); - length += 1 + len; - } - if (defined(obj.type)) { - var len = encodings.int32.encodingLength(obj.type); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.video_id)) { - buf[offset++] = 34; - encodings.string.encode(obj.video_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.sort_by)) { - buf[offset++] = 48; - encodings.int32.encode(obj.sort_by, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.type)) { - buf[offset++] = 120; - encodings.int32.encode(obj.type, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - video_id: "", - sort_by: 0, - type: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 4: - obj.video_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 6: - obj.sort_by = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 15: - obj.type = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - function defineRepliesOptions() { - var UnkOpts = RepliesOptions.UnkOpts = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineUnkOpts(); - function defineUnkOpts() { - UnkOpts.encodingLength = encodingLength; - UnkOpts.encode = encode; - UnkOpts.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.unk_param)) { - var len = encodings.int32.encodingLength(obj.unk_param); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.unk_param)) { - buf[offset++] = 8; - encodings.int32.encode(obj.unk_param, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - unk_param: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.unk_param = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - RepliesOptions.encodingLength = encodingLength; - RepliesOptions.encode = encode; - RepliesOptions.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.comment_id)) { - var len = encodings.string.encodingLength(obj.comment_id); - length += 1 + len; - } - if (defined(obj.unkopts)) { - var len = UnkOpts.encodingLength(obj.unkopts); - length += varint.encodingLength(len); - length += 1 + len; - } - if (defined(obj.channel_id)) { - var len = encodings.string.encodingLength(obj.channel_id); - length += 1 + len; - } - if (defined(obj.video_id)) { - var len = encodings.string.encodingLength(obj.video_id); - length += 1 + len; - } - if (defined(obj.unk_param_1)) { - var len = encodings.int32.encodingLength(obj.unk_param_1); - length += 1 + len; - } - if (defined(obj.unk_param_2)) { - var len = encodings.int32.encodingLength(obj.unk_param_2); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.comment_id)) { - buf[offset++] = 18; - encodings.string.encode(obj.comment_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.unkopts)) { - buf[offset++] = 34; - varint.encode(UnkOpts.encodingLength(obj.unkopts), buf, offset); - offset += varint.encode.bytes; - UnkOpts.encode(obj.unkopts, buf, offset); - offset += UnkOpts.encode.bytes; - } - if (defined(obj.channel_id)) { - buf[offset++] = 42; - encodings.string.encode(obj.channel_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.video_id)) { - buf[offset++] = 50; - encodings.string.encode(obj.video_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.unk_param_1)) { - buf[offset++] = 64; - encodings.int32.encode(obj.unk_param_1, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.unk_param_2)) { - buf[offset++] = 72; - encodings.int32.encode(obj.unk_param_2, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - comment_id: "", - unkopts: null, - channel_id: "", - video_id: "", - unk_param_1: 0, - unk_param_2: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 2: - obj.comment_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 4: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.unkopts = UnkOpts.decode(buf, offset, offset + len); - offset += UnkOpts.decode.bytes; - break; - case 5: - obj.channel_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 6: - obj.video_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 8: - obj.unk_param_1 = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 9: - obj.unk_param_2 = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - Params.encodingLength = encodingLength; - Params.encode = encode; - Params.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.unk_token)) { - var len = encodings.string.encodingLength(obj.unk_token); - length += 1 + len; - } - if (defined(obj.opts)) { - var len = Options.encodingLength(obj.opts); - length += varint.encodingLength(len); - length += 1 + len; - } - if (defined(obj.replies_opts)) { - var len = RepliesOptions.encodingLength(obj.replies_opts); - length += varint.encodingLength(len); - length += 1 + len; - } - if (defined(obj.page)) { - var len = encodings.int32.encodingLength(obj.page); - length += 1 + len; - } - if (defined(obj.target)) { - var len = encodings.string.encodingLength(obj.target); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.unk_token)) { - buf[offset++] = 10; - encodings.string.encode(obj.unk_token, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.opts)) { - buf[offset++] = 34; - varint.encode(Options.encodingLength(obj.opts), buf, offset); - offset += varint.encode.bytes; - Options.encode(obj.opts, buf, offset); - offset += Options.encode.bytes; - } - if (defined(obj.replies_opts)) { - buf[offset++] = 26; - varint.encode(RepliesOptions.encodingLength(obj.replies_opts), buf, offset); - offset += varint.encode.bytes; - RepliesOptions.encode(obj.replies_opts, buf, offset); - offset += RepliesOptions.encode.bytes; - } - if (defined(obj.page)) { - buf[offset++] = 40; - encodings.int32.encode(obj.page, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.target)) { - buf[offset++] = 66; - encodings.string.encode(obj.target, buf, offset); - offset += encodings.string.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - unk_token: "", - opts: null, - replies_opts: null, - page: 0, - target: "" - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.unk_token = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 4: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.opts = Options.decode(buf, offset, offset + len); - offset += Options.decode.bytes; - break; - case 3: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.replies_opts = RepliesOptions.decode(buf, offset, offset + len); - offset += RepliesOptions.decode.bytes; - break; - case 5: - obj.page = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 8: - obj.target = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - GetCommentsSectionParams.encodingLength = encodingLength; - GetCommentsSectionParams.encode = encode; - GetCommentsSectionParams.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.ctx)) { - var len = Context.encodingLength(obj.ctx); - length += varint.encodingLength(len); - length += 1 + len; - } - if (defined(obj.unk_param)) { - var len = encodings.int32.encodingLength(obj.unk_param); - length += 1 + len; - } - if (defined(obj.params)) { - var len = Params.encodingLength(obj.params); - length += varint.encodingLength(len); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.ctx)) { - buf[offset++] = 18; - varint.encode(Context.encodingLength(obj.ctx), buf, offset); - offset += varint.encode.bytes; - Context.encode(obj.ctx, buf, offset); - offset += Context.encode.bytes; - } - if (defined(obj.unk_param)) { - buf[offset++] = 24; - encodings.int32.encode(obj.unk_param, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.params)) { - buf[offset++] = 50; - varint.encode(Params.encodingLength(obj.params), buf, offset); - offset += varint.encode.bytes; - Params.encode(obj.params, buf, offset); - offset += Params.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - ctx: null, - unk_param: 0, - params: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 2: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.ctx = Context.decode(buf, offset, offset + len); - offset += Context.decode.bytes; - break; - case 3: - obj.unk_param = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 6: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.params = Params.decode(buf, offset, offset + len); - offset += Params.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } -} -function defineCreateCommentParams() { - var Params = CreateCommentParams.Params = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineParams(); - function defineParams() { - Params.encodingLength = encodingLength; - Params.encode = encode; - Params.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.index)) { - var len = encodings.int32.encodingLength(obj.index); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.index)) { - buf[offset++] = 8; - encodings.int32.encode(obj.index, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - index: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.index = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - CreateCommentParams.encodingLength = encodingLength; - CreateCommentParams.encode = encode; - CreateCommentParams.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.video_id)) { - var len = encodings.string.encodingLength(obj.video_id); - length += 1 + len; - } - if (defined(obj.params)) { - var len = Params.encodingLength(obj.params); - length += varint.encodingLength(len); - length += 1 + len; - } - if (defined(obj.number)) { - var len = encodings.int32.encodingLength(obj.number); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.video_id)) { - buf[offset++] = 18; - encodings.string.encode(obj.video_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.params)) { - buf[offset++] = 42; - varint.encode(Params.encodingLength(obj.params), buf, offset); - offset += varint.encode.bytes; - Params.encode(obj.params, buf, offset); - offset += Params.encode.bytes; - } - if (defined(obj.number)) { - buf[offset++] = 80; - encodings.int32.encode(obj.number, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - video_id: "", - params: null, - number: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 2: - obj.video_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 5: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.params = Params.decode(buf, offset, offset + len); - offset += Params.decode.bytes; - break; - case 10: - obj.number = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } -} -function defineCreateCommentReplyParams() { - var UnknownParams = CreateCommentReplyParams.UnknownParams = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineUnknownParams(); - function defineUnknownParams() { - UnknownParams.encodingLength = encodingLength; - UnknownParams.encode = encode; - UnknownParams.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.unk_num)) { - var len = encodings.int32.encodingLength(obj.unk_num); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.unk_num)) { - buf[offset++] = 8; - encodings.int32.encode(obj.unk_num, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - unk_num: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.unk_num = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - CreateCommentReplyParams.encodingLength = encodingLength; - CreateCommentReplyParams.encode = encode; - CreateCommentReplyParams.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.video_id)) { - var len = encodings.string.encodingLength(obj.video_id); - length += 1 + len; - } - if (defined(obj.comment_id)) { - var len = encodings.string.encodingLength(obj.comment_id); - length += 1 + len; - } - if (defined(obj.params)) { - var len = UnknownParams.encodingLength(obj.params); - length += varint.encodingLength(len); - length += 1 + len; - } - if (defined(obj.unk_num)) { - var len = encodings.int32.encodingLength(obj.unk_num); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.video_id)) { - buf[offset++] = 18; - encodings.string.encode(obj.video_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.comment_id)) { - buf[offset++] = 34; - encodings.string.encode(obj.comment_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.params)) { - buf[offset++] = 42; - varint.encode(UnknownParams.encodingLength(obj.params), buf, offset); - offset += varint.encode.bytes; - UnknownParams.encode(obj.params, buf, offset); - offset += UnknownParams.encode.bytes; - } - if (defined(obj.unk_num)) { - buf[offset++] = 80; - encodings.int32.encode(obj.unk_num, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - video_id: "", - comment_id: "", - params: null, - unk_num: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 2: - obj.video_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 4: - obj.comment_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 5: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.params = UnknownParams.decode(buf, offset, offset + len); - offset += UnknownParams.decode.bytes; - break; - case 10: - obj.unk_num = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } -} -function definePeformCommentActionParams() { - var TranslateCommentParams = PeformCommentActionParams.TranslateCommentParams = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineTranslateCommentParams(); - function defineTranslateCommentParams() { - var Params = TranslateCommentParams.Params = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineParams(); - function defineParams() { - var Comment = Params.Comment = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineComment(); - function defineComment() { - Comment.encodingLength = encodingLength; - Comment.encode = encode; - Comment.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.text)) { - var len = encodings.string.encodingLength(obj.text); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.text)) { - buf[offset++] = 10; - encodings.string.encode(obj.text, buf, offset); - offset += encodings.string.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - text: "" - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.text = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - Params.encodingLength = encodingLength; - Params.encode = encode; - Params.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.comment)) { - var len = Comment.encodingLength(obj.comment); - length += varint.encodingLength(len); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.comment)) { - buf[offset++] = 10; - varint.encode(Comment.encodingLength(obj.comment), buf, offset); - offset += varint.encode.bytes; - Comment.encode(obj.comment, buf, offset); - offset += Comment.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - comment: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.comment = Comment.decode(buf, offset, offset + len); - offset += Comment.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - TranslateCommentParams.encodingLength = encodingLength; - TranslateCommentParams.encode = encode; - TranslateCommentParams.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.params)) { - var len = Params.encodingLength(obj.params); - length += varint.encodingLength(len); - length += 1 + len; - } - if (defined(obj.comment_id)) { - var len = encodings.string.encodingLength(obj.comment_id); - length += 1 + len; - } - if (defined(obj.target_language)) { - var len = encodings.string.encodingLength(obj.target_language); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.params)) { - buf[offset++] = 26; - varint.encode(Params.encodingLength(obj.params), buf, offset); - offset += varint.encode.bytes; - Params.encode(obj.params, buf, offset); - offset += Params.encode.bytes; - } - if (defined(obj.comment_id)) { - buf[offset++] = 18; - encodings.string.encode(obj.comment_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.target_language)) { - buf[offset++] = 34; - encodings.string.encode(obj.target_language, buf, offset); - offset += encodings.string.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - params: null, - comment_id: "", - target_language: "" - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 3: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.params = Params.decode(buf, offset, offset + len); - offset += Params.decode.bytes; - break; - case 2: - obj.comment_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 4: - obj.target_language = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - PeformCommentActionParams.encodingLength = encodingLength; - PeformCommentActionParams.encode = encode; - PeformCommentActionParams.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.type)) { - var len = encodings.int32.encodingLength(obj.type); - length += 1 + len; - } - if (defined(obj.comment_id)) { - var len = encodings.string.encodingLength(obj.comment_id); - length += 1 + len; + buf[offset++] = 10 + encodings.string.encode(obj.channel_id, buf, offset) + offset += encodings.string.encode.bytes } if (defined(obj.video_id)) { - var len = encodings.string.encodingLength(obj.video_id); - length += 1 + len; + buf[offset++] = 18 + encodings.string.encode(obj.video_id, buf, offset) + offset += encodings.string.encode.bytes } - if (defined(obj.unk_num)) { - var len = encodings.int32.encodingLength(obj.unk_num); - length += 1 + len; + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + channel_id: "", + video_id: "" } - if (defined(obj.channel_id)) { - var len = encodings.string.encodingLength(obj.channel_id); - length += 2 + len; + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.channel_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 2: + obj.video_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } } - if (defined(obj.translate_comment_params)) { - var len = TranslateCommentParams.encodingLength(obj.translate_comment_params); - length += varint.encodingLength(len); - length += 2 + len; - } - return length; + } } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.type)) { - buf[offset++] = 8; - encodings.int32.encode(obj.type, buf, offset); - offset += encodings.int32.encode.bytes; + + Params.encodingLength = encodingLength + Params.encode = encode + Params.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.ids)) { + var len = Ids.encodingLength(obj.ids) + length += varint.encodingLength(len) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.ids)) { + buf[offset++] = 42 + varint.encode(Ids.encodingLength(obj.ids), buf, offset) + offset += varint.encode.bytes + Ids.encode(obj.ids, buf, offset) + offset += Ids.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + ids: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj } - if (defined(obj.comment_id)) { - buf[offset++] = 26; - encodings.string.encode(obj.comment_id, buf, offset); - offset += encodings.string.encode.bytes; + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 5: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.ids = Ids.decode(buf, offset, offset + len) + offset += Ids.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) } + } + } + } + + LiveMessageParams.encodingLength = encodingLength + LiveMessageParams.encode = encode + LiveMessageParams.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.params)) { + var len = Params.encodingLength(obj.params) + length += varint.encodingLength(len) + length += 1 + len + } + if (defined(obj.number_0)) { + var len = encodings.int32.encodingLength(obj.number_0) + length += 1 + len + } + if (defined(obj.number_1)) { + var len = encodings.int32.encodingLength(obj.number_1) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.params)) { + buf[offset++] = 10 + varint.encode(Params.encodingLength(obj.params), buf, offset) + offset += varint.encode.bytes + Params.encode(obj.params, buf, offset) + offset += Params.encode.bytes + } + if (defined(obj.number_0)) { + buf[offset++] = 16 + encodings.int32.encode(obj.number_0, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.number_1)) { + buf[offset++] = 24 + encodings.int32.encode(obj.number_1, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + params: null, + number_0: 0, + number_1: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.params = Params.decode(buf, offset, offset + len) + offset += Params.decode.bytes + break + case 2: + obj.number_0 = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 3: + obj.number_1 = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } +} + +function defineGetCommentsSectionParams () { + var Context = GetCommentsSectionParams.Context = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + var Params = GetCommentsSectionParams.Params = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineContext() + defineParams() + + function defineContext () { + Context.encodingLength = encodingLength + Context.encode = encode + Context.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.video_id)) { + var len = encodings.string.encodingLength(obj.video_id) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.video_id)) { + buf[offset++] = 18 + encodings.string.encode(obj.video_id, buf, offset) + offset += encodings.string.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + video_id: "" + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 2: + obj.video_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + function defineParams () { + var Options = Params.Options = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + var RepliesOptions = Params.RepliesOptions = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineOptions() + defineRepliesOptions() + + function defineOptions () { + Options.encodingLength = encodingLength + Options.encode = encode + Options.decode = decode + + function encodingLength (obj) { + var length = 0 if (defined(obj.video_id)) { - buf[offset++] = 42; - encodings.string.encode(obj.video_id, buf, offset); - offset += encodings.string.encode.bytes; + var len = encodings.string.encodingLength(obj.video_id) + length += 1 + len } - if (defined(obj.unk_num)) { - buf[offset++] = 16; - encodings.int32.encode(obj.unk_num, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.channel_id)) { - buf[offset++] = 186; - buf[offset++] = 1; - encodings.string.encode(obj.channel_id, buf, offset); - offset += encodings.string.encode.bytes; - } - if (defined(obj.translate_comment_params)) { - buf[offset++] = 250; - buf[offset++] = 1; - varint.encode(TranslateCommentParams.encodingLength(obj.translate_comment_params), buf, offset); - offset += varint.encode.bytes; - TranslateCommentParams.encode(obj.translate_comment_params, buf, offset); - offset += TranslateCommentParams.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - type: 0, - comment_id: "", - video_id: "", - unk_num: 0, - channel_id: "", - translate_comment_params: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.type = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 3: - obj.comment_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 5: - obj.video_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 2: - obj.unk_num = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 23: - obj.channel_id = encodings.string.decode(buf, offset); - offset += encodings.string.decode.bytes; - break; - case 31: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.translate_comment_params = TranslateCommentParams.decode(buf, offset, offset + len); - offset += TranslateCommentParams.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } -} -function defineMusicSearchFilter() { - var Filters = MusicSearchFilter.Filters = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineFilters(); - function defineFilters() { - var Type = Filters.Type = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineType(); - function defineType() { - Type.encodingLength = encodingLength; - Type.encode = encode; - Type.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.all)) { - var len = encodings.int32.encodingLength(obj.all); - length += 1 + len; - } - if (defined(obj.song)) { - var len = encodings.int32.encodingLength(obj.song); - length += 1 + len; - } - if (defined(obj.video)) { - var len = encodings.int32.encodingLength(obj.video); - length += 1 + len; - } - if (defined(obj.album)) { - var len = encodings.int32.encodingLength(obj.album); - length += 1 + len; - } - if (defined(obj.artist)) { - var len = encodings.int32.encodingLength(obj.artist); - length += 1 + len; - } - if (defined(obj.playlist)) { - var len = encodings.int32.encodingLength(obj.playlist); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.all)) { - buf[offset++] = 0; - encodings.int32.encode(obj.all, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.song)) { - buf[offset++] = 8; - encodings.int32.encode(obj.song, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.video)) { - buf[offset++] = 16; - encodings.int32.encode(obj.video, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.album)) { - buf[offset++] = 24; - encodings.int32.encode(obj.album, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.artist)) { - buf[offset++] = 32; - encodings.int32.encode(obj.artist, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.playlist)) { - buf[offset++] = 40; - encodings.int32.encode(obj.playlist, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - all: 0, - song: 0, - video: 0, - album: 0, - artist: 0, - playlist: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 0: - obj.all = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 1: - obj.song = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 2: - obj.video = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 3: - obj.album = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 4: - obj.artist = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 5: - obj.playlist = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - Filters.encodingLength = encodingLength; - Filters.encode = encode; - Filters.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.type)) { - var len = Type.encodingLength(obj.type); - length += varint.encodingLength(len); - length += 2 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.type)) { - buf[offset++] = 138; - buf[offset++] = 1; - varint.encode(Type.encodingLength(obj.type), buf, offset); - offset += varint.encode.bytes; - Type.encode(obj.type, buf, offset); - offset += Type.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - type: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 17: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.type = Type.decode(buf, offset, offset + len); - offset += Type.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - MusicSearchFilter.encodingLength = encodingLength; - MusicSearchFilter.encode = encode; - MusicSearchFilter.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.filters)) { - var len = Filters.encodingLength(obj.filters); - length += varint.encodingLength(len); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.filters)) { - buf[offset++] = 18; - varint.encode(Filters.encodingLength(obj.filters), buf, offset); - offset += varint.encode.bytes; - Filters.encode(obj.filters, buf, offset); - offset += Filters.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - filters: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 2: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.filters = Filters.decode(buf, offset, offset + len); - offset += Filters.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } -} -function defineSearchFilter() { - var Filters = SearchFilter.Filters = { - buffer: true, - encodingLength: null, - encode: null, - decode: null - }; - defineFilters(); - function defineFilters() { - Filters.encodingLength = encodingLength; - Filters.encode = encode; - Filters.decode = decode; - function encodingLength(obj) { - var length = 0; - if (defined(obj.upload_date)) { - var len = encodings.int32.encodingLength(obj.upload_date); - length += 1 + len; - } - if (defined(obj.type)) { - var len = encodings.int32.encodingLength(obj.type); - length += 1 + len; - } - if (defined(obj.duration)) { - var len = encodings.int32.encodingLength(obj.duration); - length += 1 + len; - } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; - if (defined(obj.upload_date)) { - buf[offset++] = 8; - encodings.int32.encode(obj.upload_date, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.type)) { - buf[offset++] = 16; - encodings.int32.encode(obj.type, buf, offset); - offset += encodings.int32.encode.bytes; - } - if (defined(obj.duration)) { - buf[offset++] = 24; - encodings.int32.encode(obj.duration, buf, offset); - offset += encodings.int32.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; - var obj = { - upload_date: 0, - type: 0, - duration: 0 - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.upload_date = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 2: - obj.type = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 3: - obj.duration = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } - } - } - } - SearchFilter.encodingLength = encodingLength; - SearchFilter.encode = encode; - SearchFilter.decode = decode; - function encodingLength(obj) { - var length = 0; if (defined(obj.sort_by)) { - var len = encodings.int32.encodingLength(obj.sort_by); - length += 1 + len; + var len = encodings.int32.encodingLength(obj.sort_by) + length += 1 + len } - if (defined(obj.no_filter)) { - var len = encodings.int32.encodingLength(obj.no_filter); - length += 2 + len; + if (defined(obj.type)) { + var len = encodings.int32.encodingLength(obj.type) + length += 1 + len } - if (defined(obj.filters)) { - var len = Filters.encodingLength(obj.filters); - length += varint.encodingLength(len); - length += 1 + len; + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.video_id)) { + buf[offset++] = 34 + encodings.string.encode(obj.video_id, buf, offset) + offset += encodings.string.encode.bytes } - return length; - } - function encode(obj, buf, offset) { - if (!offset) - offset = 0; - if (!buf) - buf = Buffer.allocUnsafe(encodingLength(obj)); - var oldOffset = offset; if (defined(obj.sort_by)) { - buf[offset++] = 8; - encodings.int32.encode(obj.sort_by, buf, offset); - offset += encodings.int32.encode.bytes; + buf[offset++] = 48 + encodings.int32.encode(obj.sort_by, buf, offset) + offset += encodings.int32.encode.bytes } - if (defined(obj.no_filter)) { - buf[offset++] = 152; - buf[offset++] = 1; - encodings.int32.encode(obj.no_filter, buf, offset); - offset += encodings.int32.encode.bytes; + if (defined(obj.type)) { + buf[offset++] = 120 + encodings.int32.encode(obj.type, buf, offset) + offset += encodings.int32.encode.bytes } - if (defined(obj.filters)) { - buf[offset++] = 18; - varint.encode(Filters.encodingLength(obj.filters), buf, offset); - offset += varint.encode.bytes; - Filters.encode(obj.filters, buf, offset); - offset += Filters.encode.bytes; - } - encode.bytes = offset - oldOffset; - return buf; - } - function decode(buf, offset, end) { - if (!offset) - offset = 0; - if (!end) - end = buf.length; - if (!(end <= buf.length && offset <= buf.length)) - throw new Error("Decoded message is not valid"); - var oldOffset = offset; + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset var obj = { - sort_by: 0, - no_filter: 0, - filters: null - }; - while (true) { - if (end <= offset) { - decode.bytes = offset - oldOffset; - return obj; - } - var prefix = varint.decode(buf, offset); - offset += varint.decode.bytes; - var tag = prefix >> 3; - switch (tag) { - case 1: - obj.sort_by = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 19: - obj.no_filter = encodings.int32.decode(buf, offset); - offset += encodings.int32.decode.bytes; - break; - case 2: - var len = varint.decode(buf, offset); - offset += varint.decode.bytes; - obj.filters = Filters.decode(buf, offset, offset + len); - offset += Filters.decode.bytes; - break; - default: - offset = skip(prefix & 7, buf, offset); - } + video_id: "", + sort_by: 0, + type: 0 } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 4: + obj.video_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 6: + obj.sort_by = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 15: + obj.type = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } } + + function defineRepliesOptions () { + var UnkOpts = RepliesOptions.UnkOpts = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineUnkOpts() + + function defineUnkOpts () { + UnkOpts.encodingLength = encodingLength + UnkOpts.encode = encode + UnkOpts.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.unk_param)) { + var len = encodings.int32.encodingLength(obj.unk_param) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.unk_param)) { + buf[offset++] = 8 + encodings.int32.encode(obj.unk_param, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + unk_param: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.unk_param = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + RepliesOptions.encodingLength = encodingLength + RepliesOptions.encode = encode + RepliesOptions.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.comment_id)) { + var len = encodings.string.encodingLength(obj.comment_id) + length += 1 + len + } + if (defined(obj.unkopts)) { + var len = UnkOpts.encodingLength(obj.unkopts) + length += varint.encodingLength(len) + length += 1 + len + } + if (defined(obj.channel_id)) { + var len = encodings.string.encodingLength(obj.channel_id) + length += 1 + len + } + if (defined(obj.video_id)) { + var len = encodings.string.encodingLength(obj.video_id) + length += 1 + len + } + if (defined(obj.unk_param_1)) { + var len = encodings.int32.encodingLength(obj.unk_param_1) + length += 1 + len + } + if (defined(obj.unk_param_2)) { + var len = encodings.int32.encodingLength(obj.unk_param_2) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.comment_id)) { + buf[offset++] = 18 + encodings.string.encode(obj.comment_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.unkopts)) { + buf[offset++] = 34 + varint.encode(UnkOpts.encodingLength(obj.unkopts), buf, offset) + offset += varint.encode.bytes + UnkOpts.encode(obj.unkopts, buf, offset) + offset += UnkOpts.encode.bytes + } + if (defined(obj.channel_id)) { + buf[offset++] = 42 + encodings.string.encode(obj.channel_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.video_id)) { + buf[offset++] = 50 + encodings.string.encode(obj.video_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.unk_param_1)) { + buf[offset++] = 64 + encodings.int32.encode(obj.unk_param_1, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.unk_param_2)) { + buf[offset++] = 72 + encodings.int32.encode(obj.unk_param_2, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + comment_id: "", + unkopts: null, + channel_id: "", + video_id: "", + unk_param_1: 0, + unk_param_2: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 2: + obj.comment_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 4: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.unkopts = UnkOpts.decode(buf, offset, offset + len) + offset += UnkOpts.decode.bytes + break + case 5: + obj.channel_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 6: + obj.video_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 8: + obj.unk_param_1 = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 9: + obj.unk_param_2 = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + Params.encodingLength = encodingLength + Params.encode = encode + Params.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.unk_token)) { + var len = encodings.string.encodingLength(obj.unk_token) + length += 1 + len + } + if (defined(obj.opts)) { + var len = Options.encodingLength(obj.opts) + length += varint.encodingLength(len) + length += 1 + len + } + if (defined(obj.replies_opts)) { + var len = RepliesOptions.encodingLength(obj.replies_opts) + length += varint.encodingLength(len) + length += 1 + len + } + if (defined(obj.page)) { + var len = encodings.int32.encodingLength(obj.page) + length += 1 + len + } + if (defined(obj.target)) { + var len = encodings.string.encodingLength(obj.target) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.unk_token)) { + buf[offset++] = 10 + encodings.string.encode(obj.unk_token, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.opts)) { + buf[offset++] = 34 + varint.encode(Options.encodingLength(obj.opts), buf, offset) + offset += varint.encode.bytes + Options.encode(obj.opts, buf, offset) + offset += Options.encode.bytes + } + if (defined(obj.replies_opts)) { + buf[offset++] = 26 + varint.encode(RepliesOptions.encodingLength(obj.replies_opts), buf, offset) + offset += varint.encode.bytes + RepliesOptions.encode(obj.replies_opts, buf, offset) + offset += RepliesOptions.encode.bytes + } + if (defined(obj.page)) { + buf[offset++] = 40 + encodings.int32.encode(obj.page, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.target)) { + buf[offset++] = 66 + encodings.string.encode(obj.target, buf, offset) + offset += encodings.string.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + unk_token: "", + opts: null, + replies_opts: null, + page: 0, + target: "" + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.unk_token = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 4: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.opts = Options.decode(buf, offset, offset + len) + offset += Options.decode.bytes + break + case 3: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.replies_opts = RepliesOptions.decode(buf, offset, offset + len) + offset += RepliesOptions.decode.bytes + break + case 5: + obj.page = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 8: + obj.target = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + GetCommentsSectionParams.encodingLength = encodingLength + GetCommentsSectionParams.encode = encode + GetCommentsSectionParams.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.ctx)) { + var len = Context.encodingLength(obj.ctx) + length += varint.encodingLength(len) + length += 1 + len + } + if (defined(obj.unk_param)) { + var len = encodings.int32.encodingLength(obj.unk_param) + length += 1 + len + } + if (defined(obj.params)) { + var len = Params.encodingLength(obj.params) + length += varint.encodingLength(len) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.ctx)) { + buf[offset++] = 18 + varint.encode(Context.encodingLength(obj.ctx), buf, offset) + offset += varint.encode.bytes + Context.encode(obj.ctx, buf, offset) + offset += Context.encode.bytes + } + if (defined(obj.unk_param)) { + buf[offset++] = 24 + encodings.int32.encode(obj.unk_param, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.params)) { + buf[offset++] = 50 + varint.encode(Params.encodingLength(obj.params), buf, offset) + offset += varint.encode.bytes + Params.encode(obj.params, buf, offset) + offset += Params.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + ctx: null, + unk_param: 0, + params: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 2: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.ctx = Context.decode(buf, offset, offset + len) + offset += Context.decode.bytes + break + case 3: + obj.unk_param = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 6: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.params = Params.decode(buf, offset, offset + len) + offset += Params.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } } -function defined(val) { - return val !== null && val !== undefined && (typeof val !== 'number' || !isNaN(val)); + +function defineCreateCommentParams () { + var Params = CreateCommentParams.Params = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineParams() + + function defineParams () { + Params.encodingLength = encodingLength + Params.encode = encode + Params.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.index)) { + var len = encodings.int32.encodingLength(obj.index) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.index)) { + buf[offset++] = 8 + encodings.int32.encode(obj.index, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + index: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.index = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + CreateCommentParams.encodingLength = encodingLength + CreateCommentParams.encode = encode + CreateCommentParams.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.video_id)) { + var len = encodings.string.encodingLength(obj.video_id) + length += 1 + len + } + if (defined(obj.params)) { + var len = Params.encodingLength(obj.params) + length += varint.encodingLength(len) + length += 1 + len + } + if (defined(obj.number)) { + var len = encodings.int32.encodingLength(obj.number) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.video_id)) { + buf[offset++] = 18 + encodings.string.encode(obj.video_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.params)) { + buf[offset++] = 42 + varint.encode(Params.encodingLength(obj.params), buf, offset) + offset += varint.encode.bytes + Params.encode(obj.params, buf, offset) + offset += Params.encode.bytes + } + if (defined(obj.number)) { + buf[offset++] = 80 + encodings.int32.encode(obj.number, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + video_id: "", + params: null, + number: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 2: + obj.video_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 5: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.params = Params.decode(buf, offset, offset + len) + offset += Params.decode.bytes + break + case 10: + obj.number = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } } + +function defineCreateCommentReplyParams () { + var UnknownParams = CreateCommentReplyParams.UnknownParams = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineUnknownParams() + + function defineUnknownParams () { + UnknownParams.encodingLength = encodingLength + UnknownParams.encode = encode + UnknownParams.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.unk_num)) { + var len = encodings.int32.encodingLength(obj.unk_num) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.unk_num)) { + buf[offset++] = 8 + encodings.int32.encode(obj.unk_num, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + unk_num: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.unk_num = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + CreateCommentReplyParams.encodingLength = encodingLength + CreateCommentReplyParams.encode = encode + CreateCommentReplyParams.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.video_id)) { + var len = encodings.string.encodingLength(obj.video_id) + length += 1 + len + } + if (defined(obj.comment_id)) { + var len = encodings.string.encodingLength(obj.comment_id) + length += 1 + len + } + if (defined(obj.params)) { + var len = UnknownParams.encodingLength(obj.params) + length += varint.encodingLength(len) + length += 1 + len + } + if (defined(obj.unk_num)) { + var len = encodings.int32.encodingLength(obj.unk_num) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.video_id)) { + buf[offset++] = 18 + encodings.string.encode(obj.video_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.comment_id)) { + buf[offset++] = 34 + encodings.string.encode(obj.comment_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.params)) { + buf[offset++] = 42 + varint.encode(UnknownParams.encodingLength(obj.params), buf, offset) + offset += varint.encode.bytes + UnknownParams.encode(obj.params, buf, offset) + offset += UnknownParams.encode.bytes + } + if (defined(obj.unk_num)) { + buf[offset++] = 80 + encodings.int32.encode(obj.unk_num, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + video_id: "", + comment_id: "", + params: null, + unk_num: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 2: + obj.video_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 4: + obj.comment_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 5: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.params = UnknownParams.decode(buf, offset, offset + len) + offset += UnknownParams.decode.bytes + break + case 10: + obj.unk_num = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } +} + +function definePeformCommentActionParams () { + var TranslateCommentParams = PeformCommentActionParams.TranslateCommentParams = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineTranslateCommentParams() + + function defineTranslateCommentParams () { + var Params = TranslateCommentParams.Params = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineParams() + + function defineParams () { + var Comment = Params.Comment = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineComment() + + function defineComment () { + Comment.encodingLength = encodingLength + Comment.encode = encode + Comment.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.text)) { + var len = encodings.string.encodingLength(obj.text) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.text)) { + buf[offset++] = 10 + encodings.string.encode(obj.text, buf, offset) + offset += encodings.string.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + text: "" + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.text = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + Params.encodingLength = encodingLength + Params.encode = encode + Params.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.comment)) { + var len = Comment.encodingLength(obj.comment) + length += varint.encodingLength(len) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.comment)) { + buf[offset++] = 10 + varint.encode(Comment.encodingLength(obj.comment), buf, offset) + offset += varint.encode.bytes + Comment.encode(obj.comment, buf, offset) + offset += Comment.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + comment: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.comment = Comment.decode(buf, offset, offset + len) + offset += Comment.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + TranslateCommentParams.encodingLength = encodingLength + TranslateCommentParams.encode = encode + TranslateCommentParams.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.params)) { + var len = Params.encodingLength(obj.params) + length += varint.encodingLength(len) + length += 1 + len + } + if (defined(obj.comment_id)) { + var len = encodings.string.encodingLength(obj.comment_id) + length += 1 + len + } + if (defined(obj.target_language)) { + var len = encodings.string.encodingLength(obj.target_language) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.params)) { + buf[offset++] = 26 + varint.encode(Params.encodingLength(obj.params), buf, offset) + offset += varint.encode.bytes + Params.encode(obj.params, buf, offset) + offset += Params.encode.bytes + } + if (defined(obj.comment_id)) { + buf[offset++] = 18 + encodings.string.encode(obj.comment_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.target_language)) { + buf[offset++] = 34 + encodings.string.encode(obj.target_language, buf, offset) + offset += encodings.string.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + params: null, + comment_id: "", + target_language: "" + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 3: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.params = Params.decode(buf, offset, offset + len) + offset += Params.decode.bytes + break + case 2: + obj.comment_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 4: + obj.target_language = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + PeformCommentActionParams.encodingLength = encodingLength + PeformCommentActionParams.encode = encode + PeformCommentActionParams.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.type)) { + var len = encodings.int32.encodingLength(obj.type) + length += 1 + len + } + if (defined(obj.comment_id)) { + var len = encodings.string.encodingLength(obj.comment_id) + length += 1 + len + } + if (defined(obj.video_id)) { + var len = encodings.string.encodingLength(obj.video_id) + length += 1 + len + } + if (defined(obj.unk_num)) { + var len = encodings.int32.encodingLength(obj.unk_num) + length += 1 + len + } + if (defined(obj.channel_id)) { + var len = encodings.string.encodingLength(obj.channel_id) + length += 2 + len + } + if (defined(obj.translate_comment_params)) { + var len = TranslateCommentParams.encodingLength(obj.translate_comment_params) + length += varint.encodingLength(len) + length += 2 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.type)) { + buf[offset++] = 8 + encodings.int32.encode(obj.type, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.comment_id)) { + buf[offset++] = 26 + encodings.string.encode(obj.comment_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.video_id)) { + buf[offset++] = 42 + encodings.string.encode(obj.video_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.unk_num)) { + buf[offset++] = 16 + encodings.int32.encode(obj.unk_num, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.channel_id)) { + buf[offset++] = 186 + buf[offset++] = 1 + encodings.string.encode(obj.channel_id, buf, offset) + offset += encodings.string.encode.bytes + } + if (defined(obj.translate_comment_params)) { + buf[offset++] = 250 + buf[offset++] = 1 + varint.encode(TranslateCommentParams.encodingLength(obj.translate_comment_params), buf, offset) + offset += varint.encode.bytes + TranslateCommentParams.encode(obj.translate_comment_params, buf, offset) + offset += TranslateCommentParams.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + type: 0, + comment_id: "", + video_id: "", + unk_num: 0, + channel_id: "", + translate_comment_params: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.type = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 3: + obj.comment_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 5: + obj.video_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 2: + obj.unk_num = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 23: + obj.channel_id = encodings.string.decode(buf, offset) + offset += encodings.string.decode.bytes + break + case 31: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.translate_comment_params = TranslateCommentParams.decode(buf, offset, offset + len) + offset += TranslateCommentParams.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } +} + +function defineMusicSearchFilter () { + var Filters = MusicSearchFilter.Filters = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineFilters() + + function defineFilters () { + var Type = Filters.Type = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineType() + + function defineType () { + Type.encodingLength = encodingLength + Type.encode = encode + Type.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.all)) { + var len = encodings.int32.encodingLength(obj.all) + length += 1 + len + } + if (defined(obj.song)) { + var len = encodings.int32.encodingLength(obj.song) + length += 1 + len + } + if (defined(obj.video)) { + var len = encodings.int32.encodingLength(obj.video) + length += 1 + len + } + if (defined(obj.album)) { + var len = encodings.int32.encodingLength(obj.album) + length += 1 + len + } + if (defined(obj.artist)) { + var len = encodings.int32.encodingLength(obj.artist) + length += 1 + len + } + if (defined(obj.playlist)) { + var len = encodings.int32.encodingLength(obj.playlist) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.all)) { + buf[offset++] = 0 + encodings.int32.encode(obj.all, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.song)) { + buf[offset++] = 8 + encodings.int32.encode(obj.song, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.video)) { + buf[offset++] = 16 + encodings.int32.encode(obj.video, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.album)) { + buf[offset++] = 24 + encodings.int32.encode(obj.album, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.artist)) { + buf[offset++] = 32 + encodings.int32.encode(obj.artist, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.playlist)) { + buf[offset++] = 40 + encodings.int32.encode(obj.playlist, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + all: 0, + song: 0, + video: 0, + album: 0, + artist: 0, + playlist: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 0: + obj.all = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 1: + obj.song = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 2: + obj.video = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 3: + obj.album = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 4: + obj.artist = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 5: + obj.playlist = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + Filters.encodingLength = encodingLength + Filters.encode = encode + Filters.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.type)) { + var len = Type.encodingLength(obj.type) + length += varint.encodingLength(len) + length += 2 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.type)) { + buf[offset++] = 138 + buf[offset++] = 1 + varint.encode(Type.encodingLength(obj.type), buf, offset) + offset += varint.encode.bytes + Type.encode(obj.type, buf, offset) + offset += Type.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + type: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 17: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.type = Type.decode(buf, offset, offset + len) + offset += Type.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + MusicSearchFilter.encodingLength = encodingLength + MusicSearchFilter.encode = encode + MusicSearchFilter.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.filters)) { + var len = Filters.encodingLength(obj.filters) + length += varint.encodingLength(len) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.filters)) { + buf[offset++] = 18 + varint.encode(Filters.encodingLength(obj.filters), buf, offset) + offset += varint.encode.bytes + Filters.encode(obj.filters, buf, offset) + offset += Filters.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + filters: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 2: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.filters = Filters.decode(buf, offset, offset + len) + offset += Filters.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } +} + +function defineSearchFilter () { + var Filters = SearchFilter.Filters = { + buffer: true, + encodingLength: null, + encode: null, + decode: null + } + + defineFilters() + + function defineFilters () { + Filters.encodingLength = encodingLength + Filters.encode = encode + Filters.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.upload_date)) { + var len = encodings.int32.encodingLength(obj.upload_date) + length += 1 + len + } + if (defined(obj.type)) { + var len = encodings.int32.encodingLength(obj.type) + length += 1 + len + } + if (defined(obj.duration)) { + var len = encodings.int32.encodingLength(obj.duration) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.upload_date)) { + buf[offset++] = 8 + encodings.int32.encode(obj.upload_date, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.type)) { + buf[offset++] = 16 + encodings.int32.encode(obj.type, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.duration)) { + buf[offset++] = 24 + encodings.int32.encode(obj.duration, buf, offset) + offset += encodings.int32.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + upload_date: 0, + type: 0, + duration: 0 + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.upload_date = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 2: + obj.type = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 3: + obj.duration = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } + } + + SearchFilter.encodingLength = encodingLength + SearchFilter.encode = encode + SearchFilter.decode = decode + + function encodingLength (obj) { + var length = 0 + if (defined(obj.sort_by)) { + var len = encodings.int32.encodingLength(obj.sort_by) + length += 1 + len + } + if (defined(obj.no_filter)) { + var len = encodings.int32.encodingLength(obj.no_filter) + length += 2 + len + } + if (defined(obj.filters)) { + var len = Filters.encodingLength(obj.filters) + length += varint.encodingLength(len) + length += 1 + len + } + return length + } + + function encode (obj, buf, offset) { + if (!offset) offset = 0 + if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) + var oldOffset = offset + if (defined(obj.sort_by)) { + buf[offset++] = 8 + encodings.int32.encode(obj.sort_by, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.no_filter)) { + buf[offset++] = 152 + buf[offset++] = 1 + encodings.int32.encode(obj.no_filter, buf, offset) + offset += encodings.int32.encode.bytes + } + if (defined(obj.filters)) { + buf[offset++] = 18 + varint.encode(Filters.encodingLength(obj.filters), buf, offset) + offset += varint.encode.bytes + Filters.encode(obj.filters, buf, offset) + offset += Filters.encode.bytes + } + encode.bytes = offset - oldOffset + return buf + } + + function decode (buf, offset, end) { + if (!offset) offset = 0 + if (!end) end = buf.length + if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") + var oldOffset = offset + var obj = { + sort_by: 0, + no_filter: 0, + filters: null + } + while (true) { + if (end <= offset) { + decode.bytes = offset - oldOffset + return obj + } + var prefix = varint.decode(buf, offset) + offset += varint.decode.bytes + var tag = prefix >> 3 + switch (tag) { + case 1: + obj.sort_by = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 19: + obj.no_filter = encodings.int32.decode(buf, offset) + offset += encodings.int32.decode.bytes + break + case 2: + var len = varint.decode(buf, offset) + offset += varint.decode.bytes + obj.filters = Filters.decode(buf, offset, offset + len) + offset += Filters.decode.bytes + break + default: + offset = skip(prefix & 7, buf, offset) + } + } + } +} + +function defined (val) { + return val !== null && val !== undefined && (typeof val !== 'number' || !isNaN(val)) +} + export { VisitorData }; export { ChannelAnalytics }; export { InnertubePayload }; @@ -2921,4 +3119,4 @@ export { CreateCommentParams }; export { CreateCommentReplyParams }; export { PeformCommentActionParams }; export { MusicSearchFilter }; -export { SearchFilter }; +export { SearchFilter }; \ No newline at end of file diff --git a/src/utils/HTTPClient.ts b/src/utils/HTTPClient.ts index e1c77861..20e37381 100644 --- a/src/utils/HTTPClient.ts +++ b/src/utils/HTTPClient.ts @@ -120,7 +120,7 @@ export default class HTTPClient { // Check if 2xx if (response.ok) { return response; - } throw new InnertubeError(`Request to ${response.url} failed with status ${response.status}`, response); + } throw new InnertubeError(`Request to ${response.url} failed with status ${response.status}`, await response.json()); } #adjustContext(ctx: Context, client: string) {