import { BaseAttributes, VideoCompact, Channel, Base } from "."; import { YoutubeRawData } from "../common"; /** @hidden */ interface PlaylistAttributes extends BaseAttributes { title: string; videoCount: number; viewCount: number; lastUpdatedAt: string; channel?: Channel; videos: VideoCompact[]; } /** Represents a Playlist, usually returned from `client.getPlaylist()` */ export default class Playlist extends Base implements PlaylistAttributes { /** The title of this playlist */ title: string; /** How many videos in this playlist */ videoCount: number; /** How many viewers does this playlist have */ viewCount: number; /** Last time this playlist is updated */ lastUpdatedAt: string; /** The channel that made this playlist */ channel?: Channel; /** Videos in the playlist */ videos: VideoCompact[]; private _continuation; /** @hidden */ constructor(playlist?: Partial); /** * Load this instance with raw data from Youtube * * @hidden */ load(data: YoutubeRawData): Playlist; /** * Load next 100 videos of the playlist, and push the loaded videos to {@link Playlist.videos} * * @example * ```js * const playlist = await youtube.getPlaylist(PLAYLIST_ID); * console.log(playlist.videos) // first 100 videos * * let newVideos = await playlist.next(); * console.log(newVideos) // 100 loaded videos * console.log(playlist.videos) // first 200 videos * * await playlist.next(0); // load the rest of the videos in the playlist * ``` * * @param count How many times to load the next videos. Set 0 to load all videos (might take a while on a large playlist!) */ next(count?: number): Promise; /** * Get compact videos * * @param playlistContents raw object from youtubei */ private static parseVideos; private static parseSideBarInfo; } export {};