ytmusic-api-proxy
v5.3.1
Published
YouTube Music API
Maintainers
Readme
YTMusic API
YouTube Music API (Unofficial) is a YouTube Music data scraper. It comes with TypeScript support API for return types. The package is published to NPM.
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
- Lyrics
- Upcoming Songs
Installation
npm install ytmusic-api-proxyUsage
Basic Usage
ES Modules (import):
import YTMusic from "ytmusic-api-proxy"
const ytmusic = new YTMusic()
await ytmusic.initialize(/* Optional: Custom cookies */)
ytmusic.search("Never gonna give you up").then(songs => {
console.log(songs)
})CommonJS (require):
const YTMusic = require("ytmusic-api-proxy").default
const ytmusic = new YTMusic()
await ytmusic.initialize(/* Optional: Custom cookies */)
ytmusic.search("Never gonna give you up").then(songs => {
console.log(songs)
})Using with HTTP Proxy
import YTMusic from "ytmusic-api-proxy"
// Option 1: Pass proxy config in constructor
const ytmusic = new YTMusic({
protocol: "http", // or "https", "socks4", "socks5"
host: "proxy.example.com",
port: 8080,
auth: { // Optional authentication
username: "your_username",
password: "your_password"
}
})
await ytmusic.initialize()
// Option 2: Pass proxy config in initialize method
const ytmusic2 = new YTMusic()
await ytmusic2.initialize({
proxy: {
protocol: "http",
host: "proxy.example.com",
port: 8080
}
})
ytmusic.search("Never gonna give you up").then(songs => {
console.log(songs)
})Proxy Configuration
The proxy configuration supports:
- HTTP/HTTPS proxies: Use
protocol: "http"orprotocol: "https" - SOCKS proxies: Use
protocol: "socks4"orprotocol: "socks5" - Authentication: Optional
authobject withusernameandpassword - Flexible setup: Configure proxy in constructor or initialize method
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 Bun Test. To run the tests, run the command
$ bun test