BeatPrints icon indicating copy to clipboard operation
BeatPrints copied to clipboard

feature: Add support for YouTube Music API

Open mosturia opened this issue 1 year ago • 1 comments

This PR aims to add support for the YT Music API.

Example track poster created from the YT Music API Example poster created from the YT Music API

(In this screenshot, the artist's name goes over the icons, but I believe it's not relevant to this PR)

Example album poster created from the YT Music API Example album poster created from the YT Music API

BREAKING CHANGES This PR brings multiple breaking changes:

  • The client is now interrogated through the class ApiClient, which contains either a YtMusic of Spotify instance.
  • The Spotify API credentials are now optional, as the default client is the YTMusic one.
  • The CLI will switch to the Spotify API client if the credentials are present in the config.

LIMITATIONS

  • The label information is not stored in YouTube Music, instead it gets replaced by the artist.
  • The release date is not always correct, and can sometimes be the video's upload date.
  • I would have preferred the YT Music logo's color replacement to be inverted, but I somehow can't get it to work properly.

WHAT'S LEFT

  • ~~Update the docs, especially for the breaking changes~~

IDEAS

  • We could add a third "API" client to get metadata from id3 tags (suggested by u/AccForTooRiskyStuff on this Reddit thread
  • Add a third poster type for a user's tracklist (their playlists, their favorite album, or whatever)

mosturia avatar Apr 20 '25 15:04 mosturia

I'm really happy with how the results turned out! I’ll be reviewing the updates after June 10th, as I got some events to complete :>

TrueMyst avatar Apr 20 '25 18:04 TrueMyst