@sushibtw/youtubei
Version:
Simple package to get information from youtube such as videos, playlists, channels, video information & comments, related videos, up next video, and more!
90 lines (89 loc) • 3.34 kB
TypeScript
import { YoutubeRawData } from "../common";
import { Base, PlaylistCompact, Thumbnails, VideoCompact, BaseAttributes } from ".";
/** @hidden */
interface ChannelAttributes extends BaseAttributes {
name: string;
thumbnails?: Thumbnails;
videoCount?: number;
subscriberCount?: string;
}
/** Represents a Youtube Channel */
export default class Channel extends Base implements ChannelAttributes {
/** The channel's name */
name: string;
/** Thumbnails of the Channel with different sizes */
thumbnails?: Thumbnails;
/** How many video does this channel have */
videoCount?: number;
/**
* How many subscriber does this channel have,
*
* This is not the exact amount, but a literal string like `"1.95M subscribers"`
*/
subscriberCount?: string;
/** Loaded videos on the channel, fetched from `channel.nextVideos()` */
videos: VideoCompact[];
/** Loaded playlists on the channel, fetched from `channel.nextPlaylists()` */
playlists: PlaylistCompact[];
private _videoContinuation?;
private _playlistContinuation?;
/** @hidden */
constructor(channel?: Partial<ChannelAttributes>);
/** The URL of the channel page */
get url(): string;
/**
* Load this instance with raw data from Youtube
*
* @hidden
*/
load(data: YoutubeRawData): Channel;
/**
* Load next 30 videos made by the channel, and push the loaded videos to {@link Channel.videos}
*
* @example
* ```js
* const channel = await youtube.findOne(CHANNEL_NAME, {type: "channel"});
* await channel.nextVideos();
* console.log(channel.videos) // first 30 videos
*
* let newVideos = await channel.nextVideos();
* console.log(newVideos) // 30 loaded videos
* console.log(channel.videos) // first 60 videos
*
* await channel.nextVideos(0); // load the rest of the videos in the channel
* ```
*
* @param count How many time to load the next videos, pass `0` to load all
*
* @return New loaded videos
*/
nextVideos(count?: number): Promise<VideoCompact[]>;
/**
* Load next 30 playlists made by the channel, and push the loaded playlists to {@link Channel.playlists}
*
* @example
* ```js
* const channel = await youtube.findOne(CHANNEL_NAME, {type: "channel"});
* await channel.nextPlaylists();
* console.log(channel.playlists) // first 30 playlists
*
* let newPlaylists = await channel.nextPlaylists();
* console.log(newPlaylists) // 30 loaded playlists
* console.log(channel.playlists) // first 60 playlists
*
* await channel.nextPlaylists(0); // load the rest of the playlists in the channel
* ```
*
* @param count How many time to load the next playlists, pass `0` to load all
*
* @return New loaded playlists
*/
nextPlaylists(count?: number): Promise<PlaylistCompact[]>;
/** Get tab data from youtube */
private getTabData;
/** Parse tab data from request, tab name is ignored if it's a continuation data */
private static parseTabData;
/** Get continuation token from items (if exists) */
private static getContinuationFromItems;
}
export {};