UNPKG

youtube-sr

Version:

Simple package to make YouTube search.

322 lines (314 loc) 9.54 kB
interface ChannelIconInterface { url?: string; width: number; height: number; } declare class Channel { name?: string; verified: boolean; id?: string; url?: string; icon: ChannelIconInterface; subscribers?: string; constructor(data: any); private _patch; iconURL(options?: { size: number; }): string; get type(): "channel"; toString(): string; toJSON(): { name: string; verified: boolean; id: string; url: string; iconURL: string; type: "channel"; subscribers: string; }; } type ThumbnailType = "default" | "hqdefault" | "mqdefault" | "sddefault" | "maxresdefault" | "ultrares"; declare class Thumbnail { id?: string; width: number; height: number; url?: string; constructor(data: any); private _patch; displayThumbnailURL(thumbnailType?: ThumbnailType): string; defaultThumbnailURL(id: "0" | "1" | "2" | "3" | "4"): string; toString(): string; toJSON(): { id: string; width: number; height: number; url: string; }; } interface VideoStreamingData { expiresInSeconds: string; formats: VideoStreamingFormat[]; adaptiveFormats: VideoStreamingFormatAdaptive[]; } interface VideoStreamingFormat { itag: number; mimeType: string; bitrate: number; width: number; height: number; lastModified: string; contentLength: string; quality: string; fps: number; qualityLabel: string; projectionType: string; averageBitrate: number; audioQuality: string; approxDurationMs: string; audioSampleRate: string; audioChannels: number; signatureCipher: string; } interface VideoStreamingFormatAdaptive extends VideoStreamingFormat { initRange?: { start: string; end: string; }; indexRange?: { start: string; end: string; }; colorInfo?: { primaries: string; transferCharacteristics?: string; matrixCoefficients?: string; }; highReplication?: boolean; loudnessDb?: number; } interface MusicInfo { title: string; cover: string; artist: string; album: string; } declare class Video { id?: string; title?: string; description?: string; durationFormatted: string; duration: number; uploadedAt?: string; views: number; thumbnail?: Thumbnail; channel?: Channel; videos?: Video[]; likes: number; dislikes: number; live: boolean; private: boolean; tags: string[]; nsfw: boolean; shorts: boolean; unlisted: boolean; streamingData?: VideoStreamingData | null; music: MusicInfo[]; constructor(data: any); private _patch; get formats(): VideoStreamingFormat[]; get adaptiveFormats(): VideoStreamingFormatAdaptive[]; get url(): string; get shortsURL(): string; embedHTML(options?: { id: string; width: number; height: number; }): string; createMixURL(): string; get embedURL(): string; get type(): "video"; toString(): string; toJSON(): { id: string; url: string; shorts_url: string; title: string; description: string; duration: number; duration_formatted: string; uploadedAt: string; unlisted: boolean; nsfw: boolean; thumbnail: { id: string; width: number; height: number; url: string; }; channel: { name: string; id: string; icon: string; }; views: number; type: "video"; tags: string[]; ratings: { likes: number; dislikes: number; }; shorts: boolean; live: boolean; private: boolean; music: MusicInfo[]; }; } declare class Playlist { id?: string; title?: string; videoCount: number; lastUpdate?: string; views?: number; url?: string; link?: string; channel?: Channel; thumbnail?: Thumbnail; videos: Video[]; mix?: boolean; fake: boolean; private _continuation; constructor(data?: {}, searchResult?: boolean); private _patch; private _patchSearch; next(limit?: number): Promise<Video[]>; fetch(max?: number): Promise<this>; get type(): "playlist"; [Symbol.iterator](): IterableIterator<Video>; toJSON(): { id: string; title: string; thumbnail: { id: string; width: number; height: number; url: string; }; channel: { name: string; id: string; icon: string; }; mix: boolean; url: string; videos: Video[]; }; } interface ParseSearchInterface { type?: "video" | "playlist" | "channel" | "all" | "film"; limit?: number; requestOptions?: RequestInit; } declare class Util { constructor(); static innertubeKey(): Promise<string>; static get VideoRegex(): RegExp; static get VideoIDRegex(): RegExp; static get AlbumRegex(): RegExp; static get PlaylistURLRegex(): RegExp; static get PlaylistIDRegex(): RegExp; static fetchInnerTubeKey(): Promise<string>; static getHTML(url: string, requestOptions?: RequestInit): Promise<string>; static parseDuration(duration: string): number; static parseSearchResult(html: string, options?: ParseSearchInterface): (Video | Channel | Playlist)[]; static parseChannel(data?: any): Channel; static parseVideo(data?: any): Video; static parsePlaylist(data?: any): Playlist; static getPlaylistVideos(data: any, limit?: number): Video[]; static getPlaylist(html: string, limit?: number): Playlist; static getContinuationToken(ctx: any): string; static getVideo(html: string): Video; static getInfoLikesCount(info: Record<string, any>): number; static getNext(body: any, home?: boolean): Video[]; static getMix(html: string): Playlist; static parseHomepage(html: string): Video[]; static getPlaylistURL(url: string): { url: string; mix: boolean; } | null; static validatePlaylist(url: string): void; static filter(ftype: string): string; static parseMS(milliseconds: number): { days: number; hours: number; minutes: number; seconds: number; }; static durationString(data: any): string; static json(data: string): any; static makeRequest(url?: string, data?: any): Promise<any>; } declare class Formatter { constructor(); static formatSearchResult(details: any[], options?: { limit?: number; type?: "film" | "video" | "channel" | "playlist" | "all"; }): (Video | Channel | Playlist)[]; } declare const SAFE_SEARCH_COOKIE = "PREF=f2=8000000"; interface SearchOptions { limit?: number; type?: "video" | "channel" | "playlist" | "all" | "film"; requestOptions?: RequestInit; safeSearch?: boolean; } interface TrendingParseOptions { type?: keyof typeof TrendingFilter | "ALL"; } interface PlaylistOptions { limit?: number; requestOptions?: RequestInit; fetchAll?: boolean; } declare const TrendingFilter: { MUSIC: string; GAMING: string; MOVIES: string; }; declare class YouTube { constructor(); static search(query: string, options?: SearchOptions & { type: "video"; }): Promise<Video[]>; static search(query: string, options?: SearchOptions & { type: "film"; }): Promise<Video[]>; static search(query: string, options?: SearchOptions & { type: "channel"; }): Promise<Channel[]>; static search(query: string, options?: SearchOptions & { type: "playlist"; }): Promise<Playlist[]>; static search(query: string, options?: SearchOptions & { type: "all"; }): Promise<(Video | Channel | Playlist)[]>; static searchOne(query: string, type?: "video", safeSearch?: boolean, requestOptions?: RequestInit): Promise<Video>; static searchOne(query: string, type?: "film", safeSearch?: boolean, requestOptions?: RequestInit): Promise<Video>; static searchOne(query: string, type?: "channel", safeSearch?: boolean, requestOptions?: RequestInit): Promise<Channel>; static searchOne(query: string, type?: "playlist", safeSearch?: boolean, requestOptions?: RequestInit): Promise<Playlist>; static getPlaylist(url: string, options?: PlaylistOptions): Promise<Playlist>; static getVideo(url: string | Video, requestOptions?: RequestInit): Promise<Video>; static homepage(): Promise<Video[]>; static fetchInnerTubeKey(): Promise<string>; static trending(options?: TrendingParseOptions): Promise<Video[]>; static getSuggestions(query: string): Promise<any[]>; static validate(url: string, type?: "VIDEO" | "VIDEO_ID" | "PLAYLIST" | "PLAYLIST_ID"): boolean; static isPlaylist(src: string): boolean; static get Regex(): { PLAYLIST_URL: RegExp; PLAYLIST_ID: RegExp; ALBUM: RegExp; VIDEO_ID: RegExp; VIDEO_URL: RegExp; }; } export { Channel, type ChannelIconInterface, Formatter, type MusicInfo, Playlist, type PlaylistOptions, SAFE_SEARCH_COOKIE, type SearchOptions, Thumbnail, TrendingFilter, type TrendingParseOptions, Util, Video, type VideoStreamingData, type VideoStreamingFormat, type VideoStreamingFormatAdaptive, YouTube, YouTube as default };