|
|
||
|---|---|---|
| docs | ||
| src | ||
| .editorconfig | ||
| .gitignore | ||
| .npmignore | ||
| .npmrc | ||
| .prettierrc | ||
| LICENSE | ||
| README.md | ||
| package.json | ||
| pnpm-lock.yaml | ||
| tsconfig.json | ||
README.md
YTMusic API
YouTube Music API (Unofficial) is a YouTube Music data scraper. It comes with TypeScript support API for return types. The NPM Package can be found here
Motivation
I used to use youtube-music-api as my youtube music api data scraper. I liked looking into the source code of how it works but it never made sense to me. I also didn't like that there were no TypeScript annotations for the return types of methods. Because of this, I decided to build my own version of a youtube music api with TypeScript annotations, testing and written in a way I can understand.
Features
- TypeScript Support for data return types
- Data from YouTube can be inconsistent but YTMusic API has been tested and the data matches the TypeScript types 95% of the time
- Scrape information directly from YouTube Music API
- Search Suggestions
- Songs
- Videos
- Artists
- Albums
- Playlists
getSong
This function takes in the following parameters
| Name | Data Type | Description |
|---|---|---|
| videoId | string |
Video ID |
The function returns a Promise<SongFull> which is the information about the song
ytmusic.getSong("v7bnOxV4jAc").then(song => {
console.log(song)
})
getVideo
This function takes in the following parameters
| Name | Data Type | Description |
|---|---|---|
| videoId | string |
Video ID |
The function returns a Promise<VideoFull> which is the information about the video
ytmusic.getVideo("v7bnOxV4jAc").then(video => {
console.log(video)
})
getArtist
This function takes in the following parameters
| Name | Data Type | Description |
|---|---|---|
| artistId | string |
Artist ID |
The function returns a Promise<ArtistFull> which is the information about the artist
ytmusic.getArtist("UCTUR0sVEkD8T5MlSHqgaI_Q").then(artist => {
console.log(artist)
})
getArtistSongs
This function takes in the following parameters
| Name | Data Type | Description |
|---|---|---|
| artistId | string |
Artist ID |
The function returns a Promise<SongDetailed[]> which is the information about all the artist's songs
ytmusic.getArtistSongs("UCTUR0sVEkD8T5MlSHqgaI_Q").then(artistSongs => {
console.log(artistSongs)
})
getArtistAlbums
This function takes in the following parameters
| Name | Data Type | Description |
|---|---|---|
| artistId | string |
Artist ID |
The function returns a Promise<AlbumDetailed[]> which is the information about all the artist's albums
ytmusic.getArtistAlbums("UCTUR0sVEkD8T5MlSHqgaI_Q").then(artistAlbums => {
console.log(artistAlbums)
})
getAlbum
This function takes in the following parameters
| Name | Data Type | Description |
|---|---|---|
| albumId | string |
Album ID |
The function returns a Promise<AlbumFull> which is the information about the album
ytmusic.getAlbum("MPREb_iG5q5DIdhdA").then(album => {
console.log(album)
})
getPlaylist
This function takes in the following parameters
| Name | Data Type | Description |
|---|---|---|
| playlistId | string |
Playlist ID |
The function returns a Promise<PlaylistFull> which is the information about the playlist (without the videos)
ytmusic.getPlaylist("OLAK5uy_nRb467jR73IXKybwzw22_rTYIJ808x4Yc").then(playlist => {
console.log(playlist)
})
getPlaylistVideos
This function takes in the following parameters
| Name | Data Type | Description |
|---|---|---|
| playlistId | string |
Playlist ID |
The function returns a Promise<Omit<VideoDetailed, "views">[]> which is the information about the videos without the view count
ytmusic.getPlaylistVideos("OLAK5uy_nRb467jR73IXKybwzw22_rTYIJ808x4Yc").then(playlistVideos => {
console.log(playlistVideos)
})
Credits
A lot of the credit should go to youtube-music-api. I build this package as a refactored and tested version of youtube-music-api with TypeScript annotations
Testing
YTMusic API's data return types are tested with Mocha. To run the tests, run the command
$ npm run test