Add all_videos function to YouTubePlayList, to get all videos from the playlist
This commit is contained in:
parent
8bdebe1180
commit
e24c430790
@ -180,7 +180,7 @@ export class YouTubePlayList {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* YouTube Playlist is divided into pages.
|
* YouTube Playlists are divided into pages.
|
||||||
*
|
*
|
||||||
* For example, if you want to get 101 - 200 songs
|
* For example, if you want to get 101 - 200 songs
|
||||||
*
|
*
|
||||||
@ -193,6 +193,7 @@ export class YouTubePlayList {
|
|||||||
* ```
|
* ```
|
||||||
* @param number Page number
|
* @param number Page number
|
||||||
* @returns Array of YouTube Video Class
|
* @returns Array of YouTube Video Class
|
||||||
|
* @see {@link YouTubePlayList.all_videos}
|
||||||
*/
|
*/
|
||||||
page(number: number): YouTubeVideo[] {
|
page(number: number): YouTubeVideo[] {
|
||||||
if (!number) throw new Error('Page number is not provided');
|
if (!number) throw new Error('Page number is not provided');
|
||||||
@ -200,27 +201,14 @@ export class YouTubePlayList {
|
|||||||
return this.fetched_videos.get(`${number}`) as YouTubeVideo[];
|
return this.fetched_videos.get(`${number}`) as YouTubeVideo[];
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Gets total no of pages in that playlist class.
|
* Gets total number of pages in that playlist class.
|
||||||
*
|
* @see {@link YouTubePlayList.all_videos}
|
||||||
* For getting all songs in a playlist
|
|
||||||
*
|
|
||||||
* ```ts
|
|
||||||
* const playlist = await play.playlist_info('playlist url');
|
|
||||||
*
|
|
||||||
* await playlist.fetch();
|
|
||||||
*
|
|
||||||
* let result = [];
|
|
||||||
*
|
|
||||||
* for (let i = 0; i <= playlist.total_pages; i++) {
|
|
||||||
* result.push(playlist.page(i));
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*/
|
*/
|
||||||
get total_pages() {
|
get total_pages() {
|
||||||
return this.fetched_videos.size;
|
return this.fetched_videos.size;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This tells total no of videos that have been fetched so far.
|
* This tells total number of videos that have been fetched so far.
|
||||||
*
|
*
|
||||||
* This can be equal to videosCount if all videos in playlist have been fetched and they are not hidden.
|
* This can be equal to videosCount if all videos in playlist have been fetched and they are not hidden.
|
||||||
*/
|
*/
|
||||||
@ -228,6 +216,22 @@ export class YouTubePlayList {
|
|||||||
const page_number: number = this.total_pages;
|
const page_number: number = this.total_pages;
|
||||||
return (page_number - 1) * 100 + (this.fetched_videos.get(`${page_number}`) as YouTubeVideo[]).length;
|
return (page_number - 1) * 100 + (this.fetched_videos.get(`${page_number}`) as YouTubeVideo[]).length;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Fetches all the videos in the playlist and returns them
|
||||||
|
* @returns An array of {@link YouTubeVideo} objects
|
||||||
|
* @see {@link YouTubePlayList.fetch}
|
||||||
|
*/
|
||||||
|
async all_videos(): Promise<YouTubeVideo[]> {
|
||||||
|
await this.fetch();
|
||||||
|
|
||||||
|
const videos = [];
|
||||||
|
|
||||||
|
for (const [, page] of this.fetched_videos.entries()) {
|
||||||
|
videos.push(...page);
|
||||||
|
}
|
||||||
|
|
||||||
|
return videos;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Converts Playlist Class to a json parsed data.
|
* Converts Playlist Class to a json parsed data.
|
||||||
* @returns
|
* @returns
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user