Musique/node_modules/ytdl-core/typings/index.d.ts
2022-01-13 13:08:36 +01:00

428 lines
14 KiB
TypeScript

declare module 'ytdl-core' {
import { ClientRequest } from 'http';
import { Readable } from 'stream';
namespace ytdl {
type Filter = 'audioandvideo' | 'videoandaudio' | 'video' | 'videoonly' | 'audio' | 'audioonly' | ((format: videoFormat) => boolean);
interface getInfoOptions {
lang?: string;
requestCallback?: () => {};
requestOptions?: {};
}
interface chooseFormatOptions {
quality?: 'lowest' | 'highest' | 'highestaudio' | 'lowestaudio' | 'highestvideo' | 'lowestvideo' | string | number | string[] | number[];
filter?: Filter;
format?: videoFormat;
}
interface downloadOptions extends getInfoOptions, chooseFormatOptions {
range?: {
start?: number;
end?: number;
};
begin?: string | number | Date;
liveBuffer?: number;
highWaterMark?: number;
dlChunkSize?: number;
}
interface videoFormat {
itag: number;
url: string;
mimeType?: string;
bitrate?: number;
audioBitrate?: number;
width?: number;
height?: number;
initRange?: { start: string; end: string };
indexRange?: { start: string; end: string };
lastModified: string;
contentLength: string;
quality: 'tiny' | 'small' | 'medium' | 'large' | 'hd720' | 'hd1080' | 'hd1440' | 'hd2160' | 'highres' | string;
qualityLabel: '144p' | '144p 15fps' | '144p60 HDR' | '240p' | '240p60 HDR' | '270p' | '360p' | '360p60 HDR'
| '480p' | '480p60 HDR' | '720p' | '720p60' | '720p60 HDR' | '1080p' | '1080p60' | '1080p60 HDR' | '1440p'
| '1440p60' | '1440p60 HDR' | '2160p' | '2160p60' | '2160p60 HDR' | '4320p' | '4320p60';
projectionType?: 'RECTANGULAR';
fps?: number;
averageBitrate?: number;
audioQuality?: 'AUDIO_QUALITY_LOW' | 'AUDIO_QUALITY_MEDIUM';
colorInfo?: {
primaries: string;
transferCharacteristics: string;
matrixCoefficients: string;
};
highReplication?: boolean;
approxDurationMs?: string;
targetDurationSec?: number;
maxDvrDurationSec?: number;
audioSampleRate?: string;
audioChannels?: number;
// Added by ytdl-core
container: 'flv' | '3gp' | 'mp4' | 'webm' | 'ts';
hasVideo: boolean;
hasAudio: boolean;
codecs: string;
videoCodec?: string;
audioCodec?: string;
isLive: boolean;
isHLS: boolean;
isDashMPD: boolean;
}
interface thumbnail {
url: string;
width: number;
height: number;
}
interface captionTrack {
baseUrl: string;
name: {
simpleText: 'Afrikaans' | 'Albanian' | 'Amharic' | 'Arabic' | 'Armenian' | 'Azerbaijani' | 'Bangla' | 'Basque'
| 'Belarusian' | 'Bosnian' | 'Bulgarian' | 'Burmese' | 'Catalan' | 'Cebuano' | 'Chinese (Simplified)'
| 'Chinese (Traditional)' | 'Corsican' | 'Croatian' | 'Czech' | 'Danish' | 'Dutch' | 'English'
| 'English (auto-generated)' | 'Esperanto' | 'Estonian' | 'Filipino' | 'Finnish' | 'French' | 'Galician'
| 'Georgian' | 'German' | 'Greek' | 'Gujarati' | 'Haitian Creole' | 'Hausa' | 'Hawaiian' | 'Hebrew' | 'Hindi'
| 'Hmong' | 'Hungarian' | 'Icelandic' | 'Igbo' | 'Indonesian' | 'Irish' | 'Italian' | 'Japanese' | 'Javanese'
| 'Kannada' | 'Kazakh' | 'Khmer' | 'Korean' | 'Kurdish' | 'Kyrgyz' | 'Lao' | 'Latin' | 'Latvian' | 'Lithuanian'
| 'Luxembourgish' | 'Macedonian' | 'Malagasy' | 'Malay' | 'Malayalam' | 'Maltese' | 'Maori' | 'Marathi'
| 'Mongolian' | 'Nepali' | 'Norwegian' | 'Nyanja' | 'Pashto' | 'Persian' | 'Polish' | 'Portuguese' | 'Punjabi'
| 'Romanian' | 'Russian' | 'Samoan' | 'Scottish Gaelic' | 'Serbian' | 'Shona' | 'Sindhi' | 'Sinhala' | 'Slovak'
| 'Slovenian' | 'Somali' | 'Southern Sotho' | 'Spanish' | 'Spanish (Spain)' | 'Sundanese' | 'Swahili'
| 'Swedish' | 'Tajik' | 'Tamil' | 'Telugu' | 'Thai' | 'Turkish' | 'Ukrainian' | 'Urdu' | 'Uzbek' | 'Vietnamese'
| 'Welsh' | 'Western Frisian' | 'Xhosa' | 'Yiddish' | 'Yoruba' | 'Zulu' | string;
};
vssId: string;
languageCode: 'af' | 'sq' | 'am' | 'ar' | 'hy' | 'az' | 'bn' | 'eu' | 'be' | 'bs' | 'bg' | 'my' | 'ca' | 'ceb'
| 'zh-Hans' | 'zh-Hant' | 'co' | 'hr' | 'cs' | 'da' | 'nl' | 'en' | 'eo' | 'et' | 'fil' | 'fi' | 'fr' | 'gl'
| 'ka' | 'de' | 'el' | 'gu' | 'ht' | 'ha' | 'haw' | 'iw' | 'hi' | 'hmn' | 'hu' | 'is' | 'ig' | 'id' | 'ga' | 'it'
| 'ja' | 'jv' | 'kn' | 'kk' | 'km' | 'ko' | 'ku' | 'ky' | 'lo' | 'la' | 'lv' | 'lt' | 'lb' | 'mk' | 'mg' | 'ms'
| 'ml' | 'mt' | 'mi' | 'mr' | 'mn' | 'ne' | 'no' | 'ny' | 'ps' | 'fa' | 'pl' | 'pt' | 'pa' | 'ro' | 'ru' | 'sm'
| 'gd' | 'sr' | 'sn' | 'sd' | 'si' | 'sk' | 'sl' | 'so' | 'st' | 'es' | 'su' | 'sw' | 'sv' | 'tg' | 'ta' | 'te'
| 'th' | 'tr' | 'uk' | 'ur' | 'uz' | 'vi' | 'cy' | 'fy' | 'xh' | 'yi' | 'yo' | 'zu' | string;
kind: string;
rtl?: boolean;
isTranslatable: boolean;
}
interface audioTrack {
captionTrackIndices: number[];
}
interface translationLanguage {
languageCode: captionTrack['languageCode'];
languageName: captionTrack['name'];
}
interface VideoDetails {
videoId: string;
title: string;
shortDescription: string;
lengthSeconds: string;
keywords?: string[];
channelId: string;
isOwnerViewing: boolean;
isCrawlable: boolean;
thumbnail: {
thumbnails: thumbnail[];
};
averageRating: number;
allowRatings: boolean;
viewCount: string;
author: string;
isPrivate: boolean;
isUnpluggedCorpus: boolean;
isLiveContent: boolean;
}
interface Media {
category: string;
category_url: string;
game?: string;
game_url?: string;
year?: number;
song?: string;
artist?: string;
artist_url?: string;
writers?: string;
licensed_by?: string;
thumbnails: thumbnail[];
}
interface Author {
id: string;
name: string;
avatar: string; // to remove later
thumbnails?: thumbnail[];
verified: boolean;
user?: string;
channel_url: string;
external_channel_url?: string;
user_url?: string;
subscriber_count?: number;
}
interface MicroformatRenderer {
thumbnail: {
thumbnails: thumbnail[];
};
embed: {
iframeUrl: string;
flashUrl: string;
width: number;
height: number;
flashSecureUrl: string;
};
title: {
simpleText: string;
};
description: {
simpleText: string;
};
lengthSeconds: string;
ownerProfileUrl: string;
ownerGplusProfileUrl?: string;
externalChannelId: string;
isFamilySafe: boolean;
availableCountries: string[];
isUnlisted: boolean;
hasYpcMetadata: boolean;
viewCount: string;
category: string;
publishDate: string;
ownerChannelName: string;
liveBroadcastDetails?: {
isLiveNow: boolean;
startTimestamp: string;
endTimestamp?: string;
};
uploadDate: string;
}
interface storyboard {
templateUrl: string;
thumbnailWidth: number;
thumbnailHeight: number;
thumbnailCount: number;
interval: number;
columns: number;
rows: number;
storyboardCount: number;
}
interface Chapter {
title: string;
start_time: number;
}
interface MoreVideoDetails extends Omit<VideoDetails, 'author' | 'thumbnail' | 'shortDescription'>, Omit<MicroformatRenderer, 'title' | 'description'> {
published: number;
video_url: string;
age_restricted: boolean;
likes: number | null;
dislikes: number | null;
media: Media;
author: Author;
thumbnails: thumbnail[];
storyboards: storyboard[];
chapters: Chapter[];
description: string | null;
}
interface videoInfo {
iv_load_policy?: string;
iv_allow_in_place_switch?: string;
iv_endscreen_url?: string;
iv_invideo_url?: string;
iv3_module?: string;
rmktEnabled?: string;
uid?: string;
vid?: string;
focEnabled?: string;
baseUrl?: string;
storyboard_spec?: string;
serialized_ad_ux_config?: string;
player_error_log_fraction?: string;
sffb?: string;
ldpj?: string;
videostats_playback_base_url?: string;
innertube_context_client_version?: string;
t?: string;
fade_in_start_milliseconds: string;
timestamp: string;
ad3_module: string;
relative_loudness: string;
allow_below_the_player_companion: string;
eventid: string;
token: string;
atc: string;
cr: string;
apply_fade_on_midrolls: string;
cl: string;
fexp: string[];
apiary_host: string;
fade_in_duration_milliseconds: string;
fflags: string;
ssl: string;
pltype: string;
enabled_engage_types: string;
hl: string;
is_listed: string;
gut_tag: string;
apiary_host_firstparty: string;
enablecsi: string;
csn: string;
status: string;
afv_ad_tag: string;
idpj: string;
sfw_player_response: string;
account_playback_token: string;
encoded_ad_safety_reason: string;
tag_for_children_directed: string;
no_get_video_log: string;
ppv_remarketing_url: string;
fmt_list: string[][];
ad_slots: string;
fade_out_duration_milliseconds: string;
instream_long: string;
allow_html5_ads: string;
core_dbp: string;
ad_device: string;
itct: string;
root_ve_type: string;
excluded_ads: string;
aftv: string;
loeid: string;
cver: string;
shortform: string;
dclk: string;
csi_page_type: string;
ismb: string;
gpt_migration: string;
loudness: string;
ad_tag: string;
of: string;
probe_url: string;
vm: string;
afv_ad_tag_restricted_to_instream: string;
gapi_hint_params: string;
cid: string;
c: string;
oid: string;
ptchn: string;
as_launched_in_country: string;
avg_rating: string;
fade_out_start_milliseconds: string;
midroll_prefetch_size: string;
allow_ratings: string;
thumbnail_url: string;
iurlsd: string;
iurlmq: string;
iurlhq: string;
iurlmaxres: string;
ad_preroll: string;
tmi: string;
trueview: string;
host_language: string;
innertube_api_key: string;
show_content_thumbnail: string;
afv_instream_max: string;
innertube_api_version: string;
mpvid: string;
allow_embed: string;
ucid: string;
plid: string;
midroll_freqcap: string;
ad_logging_flag: string;
ptk: string;
vmap: string;
watermark: string[];
dbp: string;
ad_flags: string;
html5player: string;
formats: videoFormat[];
related_videos: relatedVideo[];
no_embed_allowed?: boolean;
player_response: {
playabilityStatus: {
status: string;
playableInEmbed: boolean;
miniplayer: {
miniplayerRenderer: {
playbackMode: string;
};
};
contextParams: string;
};
streamingData: {
expiresInSeconds: string;
formats: {}[];
adaptiveFormats: {}[];
};
captions?: {
playerCaptionsRenderer: {
baseUrl: string;
visibility: string;
};
playerCaptionsTracklistRenderer: {
captionTracks: captionTrack[];
audioTracks: audioTrack[];
translationLanguages: translationLanguage[];
defaultAudioTrackIndex: number;
};
};
microformat: {
playerMicroformatRenderer: MicroformatRenderer;
};
videoDetails: VideoDetails;
playerConfig: {
audioConfig: {
loudnessDb: number;
perceptualLoudnessDb: number;
enablePerFormatLoudness: boolean;
};
streamSelectionConfig: { maxBitrate: string };
mediaCommonConfig: { dynamicReadaheadConfig: {}[] };
webPlayerConfig: { webPlayerActionsPorting: {}[] };
};
};
videoDetails: MoreVideoDetails;
}
interface relatedVideo {
id?: string;
title?: string;
published?: string;
author: Author | 'string'; // to remove the `string` part later
ucid?: string; // to remove later
author_thumbnail?: string; // to remove later
short_view_count_text?: string;
view_count?: string;
length_seconds?: number;
video_thumbnail?: string; // to remove later
thumbnails: thumbnail[];
richThumbnails: thumbnail[];
isLive: boolean;
}
function getBasicInfo(url: string, options?: getInfoOptions): Promise<videoInfo>;
function getInfo(url: string, options?: getInfoOptions): Promise<videoInfo>;
function downloadFromInfo(info: videoInfo, options?: downloadOptions): Readable;
function chooseFormat(format: videoFormat | videoFormat[], options?: chooseFormatOptions): videoFormat | never;
function filterFormats(formats: videoFormat | videoFormat[], filter?: Filter): videoFormat[];
function validateID(string: string): boolean;
function validateURL(string: string): boolean;
function getURLVideoID(string: string): string | never;
function getVideoID(string: string): string | never;
const version: number;
}
function ytdl(link: string, options?: ytdl.downloadOptions): Readable;
export = ytdl;
}