Fork of ytmusic-api
Go to file
OfficialDakari a713d6ecae allow changing axios settings 2024-10-10 19:45:40 +05:00
.github add workflows for testing and linting 2024-07-10 11:25:06 +08:00
src allow changing axios settings 2024-10-10 19:45:40 +05:00
.editorconfig timely update 2023-12-22 03:25:11 +08:00
.gitignore Migrated to using vuepress@2.0.0-beta 2022-03-29 16:45:00 +08:00
.npmignore 📝 simplify documentation 2023-12-28 04:35:45 +08:00
LICENSE Updated LICENSE 2022-03-28 03:31:43 +08:00
README.md 📝 update readme 2024-07-08 04:54:41 +08:00
biome.json use zod instead of arktype 2024-07-08 04:22:01 +08:00
bun.lockb use zod instead of arktype 2024-07-08 04:22:01 +08:00
package-lock.json allow changing axios settings 2024-10-10 19:45:40 +05:00
package.json 🚀 long awaited bug fixes 2024-07-08 04:51:51 +08:00
tsconfig.json use biomejs and clean up dependencies 2024-07-08 01:03:15 +08:00
tsup.config.ts 🚀 long awaited bug fixes 2024-07-08 04:51:51 +08:00

README.md

YTMusic API

License Languages Top Language Commit Activity Last commit

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
    • Lyrics

Usage

import YTMusic from "ytmusic-api"

const ytmusic = new YTMusic()
await ytmusic.initialize(/* Optional: Custom cookies */)

ytmusic.search("Never gonna give you up").then(songs => {
	console.log(songs)
})

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

Built with

  • NodeJS
    • TypeScript
      • @types/tough-cookie
      • bun-types
      • tsup
      • typescript
    • Miscellaneous
      • @biomejs/biome
      • axios
      • tough-cookie
      • zod
      • zod-to-json-schema