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 { YouTubeChannel } from './Channel';
import { YouTubeThumbnail } from './Thumbnail'; import { YouTubeThumbnail } from './Thumbnail';
/**
* Licensed music in the video
*
* The property names change depending on your region's language.
*/
interface VideoMusic { interface VideoMusic {
song?: string; song?: string | MusicEntry;
artist?: string; artist?: string | MusicEntry;
album?: string; album?: string;
writers?: string; writers?: string;
license?: string; license?: string;
} }
interface MusicEntry {
text?: string;
url?: string;
}
interface VideoOptions { interface VideoOptions {
/** /**
* YouTube Video ID * YouTube Video ID
@ -80,6 +90,8 @@ interface VideoOptions {
discretionAdvised?: boolean; discretionAdvised?: boolean;
/** /**
* Gives info about music content in that video. * Gives info about music content in that video.
*
* The property names of VideoMusic change depending on your region's language.
*/ */
music?: VideoMusic[]; 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 title = row.title.simpleText ?? row.title.runs[0].text;
const contents = row.contents[0].simpleText ?? row.contents[0]?.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({}); 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({}); if (row.hasDividerLine) music.push({});
}); });