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:
parent
c40b432ee3
commit
ff0129d9db
@ -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[];
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -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({});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user