Added URL to properties in music object (#280)

* Added URL endpoints to licensed music object

* Added URL info to properties in music object

* Added URL to properties in music object

* Added URL support for the Video Music properties with typings

* Added URL to music properties in YoutubeVideo

* Fixed Typings

* Added footnote to music property
This commit is contained in:
AtariTom 2022-04-08 11:20:06 -04:00 committed by GitHub
parent c40b432ee3
commit ff0129d9db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 4 deletions

View File

@ -1,14 +1,24 @@
import { YouTubeChannel } from './Channel';
import { YouTubeThumbnail } from './Thumbnail';
/**
* Licensed music in the video
*
* The property names change depending on your region's language.
*/
interface VideoMusic {
song?: string;
artist?: string;
song?: string | MusicEntry;
artist?: string | MusicEntry;
album?: string;
writers?: string;
license?: string;
}
interface MusicEntry {
text?: string;
url?: string;
}
interface VideoOptions {
/**
* YouTube Video ID
@ -80,6 +90,8 @@ interface VideoOptions {
discretionAdvised?: boolean;
/**
* Gives info about music content in that video.
*
* The property names of VideoMusic change depending on your region's language.
*/
music?: VideoMusic[];
/**

View File

@ -223,10 +223,11 @@ export async function video_basic_info(url: string, options: InfoOptions = {}):
const title = row.title.simpleText ?? row.title.runs[0].text;
const contents = row.contents[0].simpleText ?? row.contents[0]?.runs?.[0]?.text;
const url = row.contents[0]?.runs?.[0]?.navigationEndpoint?.commandMetadata?.webCommandMetadata.url;
if (music.length === 0) music.push({});
music[music.length - 1][title.toLowerCase()] = contents;
music[music.length - 1][title.toLowerCase()] = url ? {text: contents, url: `https://www.youtube.com${url}`} : contents;
if (row.hasDividerLine) music.push({});
});
@ -854,4 +855,4 @@ function parseDuration(text: string): number {
default:
return 0;
}
}
}