mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-13 19:31:46 +00:00
feat: add more type-definitions for youtube-player
Co-authored-by: ArjixWasTaken <53124886+ArjixWasTaken@users.noreply.github.com>
This commit is contained in:
15
types/player-api-events.ts
Normal file
15
types/player-api-events.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
export interface PlayerAPIEvents {
|
||||||
|
videodatachange: {
|
||||||
|
value: Record<string, unknown> & {
|
||||||
|
videoId: string
|
||||||
|
title: string
|
||||||
|
author: string
|
||||||
|
|
||||||
|
playlistId: string
|
||||||
|
isUpcoming: boolean
|
||||||
|
loading: boolean
|
||||||
|
|
||||||
|
lengthSeconds: number
|
||||||
|
}
|
||||||
|
} & ({ name: 'dataloaded' } | { name: 'dataupdated ' })
|
||||||
|
}
|
||||||
25
types/video-details.ts
Normal file
25
types/video-details.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
export interface VideoDetails {
|
||||||
|
video_id: string;
|
||||||
|
author: string;
|
||||||
|
title: string;
|
||||||
|
isPlayable: boolean;
|
||||||
|
errorCode: null;
|
||||||
|
video_quality: string;
|
||||||
|
video_quality_features: unknown[];
|
||||||
|
list: string;
|
||||||
|
backgroundable: boolean;
|
||||||
|
eventId: string;
|
||||||
|
cpn: string;
|
||||||
|
isLive: boolean;
|
||||||
|
isWindowedLive: boolean;
|
||||||
|
isManifestless: boolean;
|
||||||
|
allowLiveDvr: boolean;
|
||||||
|
isListed: boolean;
|
||||||
|
isMultiChannelAudio: boolean;
|
||||||
|
hasProgressBarBoundaries: boolean;
|
||||||
|
isPremiere: boolean;
|
||||||
|
itct: string;
|
||||||
|
progressBarStartPositionUtcTimeMillis: number | null;
|
||||||
|
progressBarEndPositionUtcTimeMillis: number | null;
|
||||||
|
paidContentOverlayDurationMs: number;
|
||||||
|
}
|
||||||
@ -1,12 +1,14 @@
|
|||||||
// TODO: fully type definitions for youtube-player
|
// TODO: fully type definitions for youtube-player
|
||||||
|
|
||||||
|
import { VideoDetails } from './video-details';
|
||||||
import { GetPlayerResponse } from './get-player-response';
|
import { GetPlayerResponse } from './get-player-response';
|
||||||
|
import { PlayerAPIEvents } from './player-api-events';
|
||||||
|
|
||||||
export interface YoutubePlayer {
|
export interface YoutubePlayer {
|
||||||
getInternalApiInterface: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getInternalApiInterface: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
getApiInterface: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getApiInterface: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
cueVideoByPlayerVars: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
cueVideoByPlayerVars: () => void;
|
||||||
loadVideoByPlayerVars: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
loadVideoByPlayerVars: () => void;
|
||||||
preloadVideoByPlayerVars: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
preloadVideoByPlayerVars: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
getAdState: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getAdState: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
sendAbandonmentPing: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
sendAbandonmentPing: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
@ -18,7 +20,7 @@ export interface YoutubePlayer {
|
|||||||
seekToStreamTime: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
seekToStreamTime: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
startSeekCsiAction: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
startSeekCsiAction: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
getStreamTimeOffset: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getStreamTimeOffset: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
getVideoData: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getVideoData: () => VideoDetails;
|
||||||
setInlinePreview: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setInlinePreview: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
updateDownloadState: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
updateDownloadState: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
queueOfflineAction: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
queueOfflineAction: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
@ -95,82 +97,116 @@ export interface YoutubePlayer {
|
|||||||
setGlobalCrop: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setGlobalCrop: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
setInternalSize: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setInternalSize: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
seekBy: (seconds: number) => void;
|
seekBy: (seconds: number) => void;
|
||||||
showControls: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
showControls: () => void;
|
||||||
hideControls: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
hideControls: () => void;
|
||||||
cancelPlayback: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
cancelPlayback: () => void;
|
||||||
getProgressState: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getProgressState: <Return>() => Return;
|
||||||
isInline: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
isInline: () => boolean;
|
||||||
setInline: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setInline: (isInline: boolean) => void;
|
||||||
setLoopVideo: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setLoopVideo: (value: boolean) => void;
|
||||||
getLoopVideo: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getLoopVideo: () => boolean;
|
||||||
getVideoContentRect: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getVideoContentRect: <Return>() => Return;
|
||||||
getVideoStats: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getVideoStats: <Return>() => Return;
|
||||||
getStoryboardFormat: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getStoryboardFormat: <Return>() => Return;
|
||||||
toggleFullscreen: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
toggleFullscreen: <Return>() => Return;
|
||||||
isFullscreen: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
isFullscreen: () => boolean;
|
||||||
getPlayerSize: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getPlayerSize: <Return>() => Return;
|
||||||
toggleSubtitles: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
toggleSubtitles: () => void;
|
||||||
setCenterCrop: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setCenterCrop: <Parameter>(param: Parameter) => void;
|
||||||
setFauxFullscreen: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setFauxFullscreen: <Parameter>(param: Parameter) => void;
|
||||||
setSizeStyle: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setSizeStyle: <Parameter>(params: Parameter) => void;
|
||||||
handleGlobalKeyDown: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
handleGlobalKeyDown: () => void;
|
||||||
handleGlobalKeyUp: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
handleGlobalKeyUp: () => void;
|
||||||
wakeUpControls: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
wakeUpControls: () => void;
|
||||||
cueVideoById: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
cueVideoById: (videoId: string) => void;
|
||||||
loadVideoById: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
loadVideoById: (videoId: string) => void;
|
||||||
cueVideoByUrl: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
cueVideoByUrl: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
loadVideoByUrl: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
loadVideoByUrl: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
playVideo: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
/**
|
||||||
pauseVideo: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
* Note: This doesn't resume playback, it plays from the start.
|
||||||
stopVideo: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
*/
|
||||||
clearVideo: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
playVideo: () => void;
|
||||||
getVideoBytesLoaded: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
pauseVideo: () => void;
|
||||||
getVideoBytesTotal: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
stopVideo: () => void;
|
||||||
getVideoLoadedFraction: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
clearVideo: () => void;
|
||||||
getVideoStartBytes: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getVideoBytesLoaded: () => number;
|
||||||
cuePlaylist: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getVideoBytesTotal: () => number;
|
||||||
loadPlaylist: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getVideoLoadedFraction: () => number;
|
||||||
nextVideo: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getVideoStartBytes: () => number;
|
||||||
previousVideo: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
cuePlaylist: () => void;
|
||||||
playVideoAt: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
loadPlaylist: () => void;
|
||||||
setShuffle: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
nextVideo: () => void;
|
||||||
setLoop: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
previousVideo: () => void;
|
||||||
getPlaylist: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
playVideoAt: () => void;
|
||||||
getPlaylistIndex: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setShuffle: <Parameter>(param: Parameter) => void;
|
||||||
getPlaylistId: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setLoop: <Parameter>(param: Parameter) => void;
|
||||||
loadModule: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getPlaylist: <Return extends unknown[]>() => Return;
|
||||||
unloadModule: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getPlaylistIndex: () => number;
|
||||||
|
getPlaylistId: () => string | undefined;
|
||||||
|
loadModule: () => void;
|
||||||
|
unloadModule: () => void;
|
||||||
setOption: <T>(optionName: string, key: string, value: T) => void;
|
setOption: <T>(optionName: string, key: string, value: T) => void;
|
||||||
getOption: <T>(optionName: string, key: string) => T | null | undefined;
|
getOption: <T>(optionName: string, key: string) => T | null | undefined;
|
||||||
getOptions: () => string[];
|
getOptions: () => string[];
|
||||||
mute: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
mute: () => void;
|
||||||
unMute: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
unMute: () => void;
|
||||||
isMuted: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
isMuted: () => boolean;
|
||||||
setVolume: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
/**
|
||||||
|
* @param volume 0-100
|
||||||
|
*/
|
||||||
|
setVolume: (volume: number) => void;
|
||||||
getVolume: () => number;
|
getVolume: () => number;
|
||||||
seekTo: (seconds: number) => void;
|
seekTo: (seconds: number) => void;
|
||||||
getPlayerMode: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getPlayerMode: <Return>() => Return;
|
||||||
getPlayerState: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getPlayerState: () => number;
|
||||||
getAvailablePlaybackRates: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getAvailablePlaybackRates: () => number[];
|
||||||
getPlaybackQuality: () => string;
|
getPlaybackQuality: () => string;
|
||||||
setPlaybackQuality: (quality: string) => void;
|
setPlaybackQuality: (quality: string) => void;
|
||||||
getAvailableQualityLevels: () => string[];
|
getAvailableQualityLevels: () => string[];
|
||||||
getCurrentTime: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
/**
|
||||||
getDuration: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
* @return float between start and end in seconds
|
||||||
addEventListener: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
*/
|
||||||
removeEventListener: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getCurrentTime: () => number;
|
||||||
getDebugText: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
/**
|
||||||
|
* @return int song duration in seconds
|
||||||
|
*/
|
||||||
|
getDuration: () => number;
|
||||||
|
addEventListener: <K extends keyof PlayerAPIEvents>(
|
||||||
|
type: K,
|
||||||
|
listener: (
|
||||||
|
this: Document,
|
||||||
|
name: PlayerAPIEvents[K]['name'],
|
||||||
|
data: PlayerAPIEvents[K]['value']
|
||||||
|
) => void,
|
||||||
|
options?: boolean | AddEventListenerOptions | undefined,
|
||||||
|
) => void;
|
||||||
|
removeEventListener: <K extends keyof PlayerAPIEvents>(
|
||||||
|
type: K,
|
||||||
|
listener: (
|
||||||
|
this: Document,
|
||||||
|
name: PlayerAPIEvents[K]['name'],
|
||||||
|
data: PlayerAPIEvents[K]['value']
|
||||||
|
) => void,
|
||||||
|
options?: boolean | EventListenerOptions | undefined,
|
||||||
|
) => void;
|
||||||
|
getDebugText: () => string;
|
||||||
addCueRange: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
addCueRange: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
removeCueRange: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
removeCueRange: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
setSize: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setSize: (size: { width: number; height: number }) => void;
|
||||||
destroy: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
destroy: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
getSphericalProperties: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getSphericalProperties: <Return>() => Return;
|
||||||
setSphericalProperties: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setSphericalProperties: <Parameter>(param: Parameter) => void;
|
||||||
mutedAutoplay: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
mutedAutoplay: () => void;
|
||||||
getVideoEmbedCode: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
/**
|
||||||
getVideoUrl: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
* @return string HTMLIFrameElement
|
||||||
getMediaReferenceTime: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
*/
|
||||||
getSize: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getVideoEmbedCode: () => string;
|
||||||
|
/**
|
||||||
|
* @return string full URL of the video (include playlist id)
|
||||||
|
*/
|
||||||
|
getVideoUrl: () => string;
|
||||||
|
getMediaReferenceTime: () => number;
|
||||||
|
getSize: () => { width: number; height: number };
|
||||||
logImaAdEvent: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
logImaAdEvent: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
preloadVideoById: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
preloadVideoById: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
setAccountLinkState: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setAccountLinkState: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
@ -178,11 +214,11 @@ export interface YoutubePlayer {
|
|||||||
getAvailableQualityData: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getAvailableQualityData: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
setCompositeParam: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setCompositeParam: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
getStatsForNerds: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getStatsForNerds: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
showVideoInfo: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
showVideoInfo: () => void;
|
||||||
hideVideoInfo: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
hideVideoInfo: () => void;
|
||||||
isVideoInfoVisible: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
isVideoInfoVisible: () => boolean;
|
||||||
getPlaybackRate: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
getPlaybackRate: () => number;
|
||||||
setPlaybackRate: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
setPlaybackRate: (playbackRate: number) => void;
|
||||||
updateFullerscreenEduButtonSubtleModeState: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
updateFullerscreenEduButtonSubtleModeState: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
updateFullerscreenEduButtonVisibility: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
updateFullerscreenEduButtonVisibility: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
addEmbedsConversionTrackingParams: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
addEmbedsConversionTrackingParams: <Parameters extends unknown[], Return>(...params: Parameters) => Return;
|
||||||
|
|||||||
Reference in New Issue
Block a user