diff --git a/src/core/Session.ts b/src/core/Session.ts
index fe3cacfa..7c52a05e 100644
--- a/src/core/Session.ts
+++ b/src/core/Session.ts
@@ -56,6 +56,7 @@ export interface Context {
export interface SessionOptions {
lang?: string;
+ location?: string;
account_index?: number;
device_category?: DeviceCategory;
client_type?: ClientType;
@@ -112,6 +113,7 @@ export default class Session extends EventEmitterLike {
static async create(options: SessionOptions = {}) {
const { context, api_key, api_version, account_index } = await Session.getSessionData(
options.lang,
+ options.location,
options.account_index,
options.device_category,
options.client_type,
@@ -123,6 +125,7 @@ export default class Session extends EventEmitterLike {
static async getSessionData(
lang = 'en-US',
+ location = '',
account_index = 0,
device_category: DeviceCategory = 'desktop',
client_name: ClientType = ClientType.WEB,
@@ -157,7 +160,7 @@ export default class Session extends EventEmitterLike {
const context: Context = {
client: {
hl: device_info[0],
- gl: device_info[2],
+ gl: location || device_info[2],
remoteHost: device_info[3],
screenDensityFloat: 1,
screenHeightPoints: 720,
diff --git a/src/parser/classes/CompactVideo.ts b/src/parser/classes/CompactVideo.ts
index f1a17080..7946839c 100644
--- a/src/parser/classes/CompactVideo.ts
+++ b/src/parser/classes/CompactVideo.ts
@@ -4,6 +4,8 @@ import Author from './misc/Author';
import { timeToSeconds } from '../../utils/Utils';
import Thumbnail from './misc/Thumbnail';
import NavigationEndpoint from './NavigationEndpoint';
+import type Menu from './menus/Menu';
+
import { YTNode } from '../helpers';
class CompactVideo extends YTNode {
@@ -25,7 +27,7 @@ class CompactVideo extends YTNode {
thumbnail_overlays;
endpoint: NavigationEndpoint;
- menu;
+ menu: Menu | null;
constructor(data: any) {
super();
@@ -43,9 +45,9 @@ class CompactVideo extends YTNode {
seconds: timeToSeconds(new Text(data.lengthText).toString())
};
- this.thumbnail_overlays = Parser.parse(data.thumbnailOverlays);
+ this.thumbnail_overlays = Parser.parseArray(data.thumbnailOverlays);
this.endpoint = new NavigationEndpoint(data.navigationEndpoint);
- this.menu = Parser.parse(data.menu);
+ this.menu = Parser.parseItem