From 7d5c972c98d7c69b0b687b241c652f3098907a9f Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Thu, 13 Feb 2025 21:31:12 +0100 Subject: [PATCH] fix(Innertube): Properly encoded params in getPost() (#882) --- protos/generated/misc/params.ts | 19 ++++--------------- protos/misc/params.proto | 4 ++-- src/Innertube.ts | 2 +- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/protos/generated/misc/params.ts b/protos/generated/misc/params.ts index 898e3597..af99cce4 100644 --- a/protos/generated/misc/params.ts +++ b/protos/generated/misc/params.ts @@ -2230,10 +2230,10 @@ function createBaseCommunityPostParams_Field2(): CommunityPostParams_Field2 { export const CommunityPostParams_Field2: MessageFns = { encode(message: CommunityPostParams_Field2, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.p1 !== 0) { - writer.uint32(16).int64(message.p1); + writer.uint32(16).uint32(message.p1); } if (message.p2 !== 0) { - writer.uint32(24).int64(message.p2); + writer.uint32(24).uint32(message.p2); } return writer; }, @@ -2250,14 +2250,14 @@ export const CommunityPostParams_Field2: MessageFns break; } - message.p1 = longToNumber(reader.int64()); + message.p1 = reader.uint32(); continue; case 3: if (tag !== 24) { break; } - message.p2 = longToNumber(reader.int64()); + message.p2 = reader.uint32(); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -2636,17 +2636,6 @@ export const CommunityPostCommentsParam_CommentDataContainer_CommentData: Messag }, }; -function longToNumber(int64: { toString(): string }): number { - const num = globalThis.Number(int64.toString()); - if (num > globalThis.Number.MAX_SAFE_INTEGER) { - throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); - } - if (num < globalThis.Number.MIN_SAFE_INTEGER) { - throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); - } - return num; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/protos/misc/params.proto b/protos/misc/params.proto index 3e4ab08e..669762d7 100644 --- a/protos/misc/params.proto +++ b/protos/misc/params.proto @@ -238,8 +238,8 @@ message CommunityPostParams { } message Field2 { - int64 p1 = 2; - int64 p2 = 3; + uint32 p1 = 2; + uint32 p2 = 3; } Field1 f1 = 25; diff --git a/src/Innertube.ts b/src/Innertube.ts index 4790b9b0..6acad41c 100644 --- a/src/Innertube.ts +++ b/src/Innertube.ts @@ -478,7 +478,7 @@ export default class Innertube { } }); - const params = encodeURIComponent(u8ToBase64(writer.finish())); + const params = encodeURIComponent(u8ToBase64(writer.finish()).replace(/\+/g, '-').replace(/\//g, '_')); const browse_endpoint = new NavigationEndpoint({ browseEndpoint: { browseId: channel_id, params: params } });