From 4f3ed59f474b6b6015795f34e4b5598f88207050 Mon Sep 17 00:00:00 2001 From: YBD Project Date: Tue, 12 Nov 2024 17:59:45 +0900 Subject: [PATCH 1/3] feat: add getCourses function to retrieve courses --- src/Innertube.ts | 7 +++++++ test/main.test.ts | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Innertube.ts b/src/Innertube.ts index 351e358a6..4a8a2b21b 100644 --- a/src/Innertube.ts +++ b/src/Innertube.ts @@ -320,6 +320,13 @@ export default class Innertube { return new TabbedFeed(this.actions, response); } + async getCourses(): Promise> { + const response = await this.actions.execute( + BrowseEndpoint.PATH, { ...BrowseEndpoint.build({ browse_id: 'FEcourses_destination' }), parse: true } + ); + return new TabbedFeed(this.actions, response); + } + async getSubscriptionsFeed(): Promise> { const response = await this.actions.execute( BrowseEndpoint.PATH, { ...BrowseEndpoint.build({ browse_id: 'FEsubscriptions' }), parse: true } diff --git a/test/main.test.ts b/test/main.test.ts index 4c98de997..12094d065 100644 --- a/test/main.test.ts +++ b/test/main.test.ts @@ -1,6 +1,7 @@ import { createWriteStream, existsSync } from 'node:fs'; -import { Innertube, Utils, YT, YTMusic, YTNodes } from '../bundle/node.cjs'; +import { Innertube, Log, Utils, YT, YTMusic, YTNodes } from '../bundle/node.cjs'; +Log.setLevel(Log.Level.NONE) jest.useRealTimers(); describe('YouTube.js Tests', () => { @@ -165,6 +166,14 @@ describe('YouTube.js Tests', () => { expect(trending.videos.length).toBeGreaterThan(0); }); + test('Innertube#getCourses', async () => { + const courses = await innertube.getCourses(); + expect(courses).toBeDefined(); + expect(courses.page.contents).toBeDefined(); + expect(courses.page.contents_memo).toBeDefined(); + expect(courses.shelves.length).toBeGreaterThan(0); + }); + describe('Innertube#getChannel', () => { let channel: YT.Channel; From 6a3ab8d6a18ea1c98162cf9cbc5bb368ebffdc38 Mon Sep 17 00:00:00 2001 From: YBD Project Date: Tue, 12 Nov 2024 18:44:33 +0900 Subject: [PATCH 2/3] chore: Change getCourses function to return Feed instead of TabbedFeed --- src/Innertube.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Innertube.ts b/src/Innertube.ts index 4a8a2b21b..83502eb3d 100644 --- a/src/Innertube.ts +++ b/src/Innertube.ts @@ -320,11 +320,11 @@ export default class Innertube { return new TabbedFeed(this.actions, response); } - async getCourses(): Promise> { + async getCourses(): Promise> { const response = await this.actions.execute( BrowseEndpoint.PATH, { ...BrowseEndpoint.build({ browse_id: 'FEcourses_destination' }), parse: true } ); - return new TabbedFeed(this.actions, response); + return new Feed(this.actions, response); } async getSubscriptionsFeed(): Promise> { From c6f7020c1fd18205053a03defa69aac62a0d6efd Mon Sep 17 00:00:00 2001 From: YBD Project Date: Tue, 12 Nov 2024 20:31:44 +0900 Subject: [PATCH 3/3] chore: Enable logging --- test/main.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/main.test.ts b/test/main.test.ts index 12094d065..927cbf60d 100644 --- a/test/main.test.ts +++ b/test/main.test.ts @@ -1,7 +1,6 @@ import { createWriteStream, existsSync } from 'node:fs'; -import { Innertube, Log, Utils, YT, YTMusic, YTNodes } from '../bundle/node.cjs'; +import { Innertube, Utils, YT, YTMusic, YTNodes } from '../bundle/node.cjs'; -Log.setLevel(Log.Level.NONE) jest.useRealTimers(); describe('YouTube.js Tests', () => {