Library
- YTMusic.get_library_playlists(limit: int | None = 25) list[dict]
Retrieves the playlists in the user’s library.
- Parameters:
limit – Number of playlists to retrieve.
None
retrieves them all.- Returns:
List of owned playlists.
Each item is in the following format:
{ 'playlistId': 'PLQwVIlKxHM6rz0fDJVv_0UlXGEWf-bFys', 'title': 'Playlist title', 'thumbnails: [...], 'count': 5 }
- YTMusic.get_library_songs(limit: int = 25, validate_responses: bool = False, order: Literal['a_to_z', 'z_to_a', 'recently_added'] | None = None) list[dict]
Gets the songs in the user’s library (liked videos are not included). To get liked songs and videos, use
get_liked_songs()
- Parameters:
limit – Number of songs to retrieve
validate_responses – Flag indicating if responses from YTM should be validated and retried in case when some songs are missing. Default: False
order – Order of songs to return. Allowed values:
a_to_z
,z_to_a
,recently_added
. Default: Default order.
- Returns:
List of songs. Same format as
get_playlist()
- YTMusic.get_library_albums(limit: int = 25, order: Literal['a_to_z', 'z_to_a', 'recently_added'] | None = None) list[dict]
Gets the albums in the user’s library.
- Parameters:
limit – Number of albums to return
order – Order of albums to return. Allowed values:
a_to_z
,z_to_a
,recently_added
. Default: Default order.
- Returns:
List of albums.
Each item is in the following format:
{ "browseId": "MPREb_G8AiyN7RvFg", "playlistId": "OLAK5uy_lKgoGvlrWhX0EIPavQUXxyPed8Cj38AWc", "title": "Beautiful", "type": "Album", "thumbnails": [...], "artists": [{ "name": "Project 46", "id": "UCXFv36m62USAN5rnVct9B4g" }], "year": "2015" }
- YTMusic.get_library_artists(limit: int = 25, order: Literal['a_to_z', 'z_to_a', 'recently_added'] | None = None) list[dict]
Gets the artists of the songs in the user’s library.
- Parameters:
limit – Number of artists to return
order – Order of artists to return. Allowed values:
a_to_z
,z_to_a
,recently_added
. Default: Default order.
- Returns:
List of artists.
Each item is in the following format:
{ "browseId": "UCxEqaQWosMHaTih-tgzDqug", "artist": "WildVibes", "subscribers": "2.91K", "thumbnails": [...] }
- YTMusic.get_library_subscriptions(limit: int = 25, order: Literal['a_to_z', 'z_to_a', 'recently_added'] | None = None) list[dict]
Gets the artists the user has subscribed to.
- Parameters:
limit – Number of artists to return
order – Order of artists to return. Allowed values:
a_to_z
,z_to_a
,recently_added
. Default: Default order.
- Returns:
List of artists. Same format as
get_library_artists()
- YTMusic.get_library_podcasts(limit: int = 25, order: Literal['a_to_z', 'z_to_a', 'recently_added'] | None = None) list[dict]
Get podcasts the user has added to the library
- Parameters:
limit – Number of podcasts to return
order – Order of podcasts to return. Allowed values:
a_to_z
,z_to_a
,recently_added
. Default: Default order.
- Returns:
List of podcasts. New Episodes playlist is the first podcast returned, but only if subscribed to relevant podcasts.
Example:
[ { "title": "New Episodes", "channel": { "id": null, "name": "Auto playlist" }, "browseId": "VLRDPN", "podcastId": "RDPN", "thumbnails": [...] }, { "title": "5 Minuten Harry Podcast", "channel": { "id": "UCDIDXF4WM1qQzerrxeEfSdA", "name": "coldmirror" }, "browseId": "MPSPPLDvBqWb1UAGeEt9n6vFH_zdGw65Obf3sH", "podcastId": "PLDvBqWb1UAGeEt9n6vFH_zdGw65Obf3sH", "thumbnails": [...] } ]
- YTMusic.get_library_channels(limit: int = 25, order: Literal['a_to_z', 'z_to_a', 'recently_added'] | None = None) list[dict]
Get channels the user has added to the library
- Parameters:
limit – Number of channels to return
order – Order of channels to return. Allowed values:
a_to_z
,z_to_a
,recently_added
. Default: Default order.
- Returns:
List of channels.
Example:
[ { "browseId": "UCRFF8xw5dg9mL4r5ryFOtKw", "artist": "Jumpers Jump", "subscribers": "1.54M", "thumbnails": [...] }, { "browseId": "UCQ3f2_sO3NJyDkuCxCNSOVA", "artist": "BROWN BAG", "subscribers": "74.2K", "thumbnails": [...] } ]
- YTMusic.get_liked_songs(limit: int = 100) dict
Gets playlist items for the ‘Liked Songs’ playlist
- Parameters:
limit – How many items to return. Default: 100
- Returns:
List of playlistItem dictionaries. See
get_playlist()
- YTMusic.get_saved_episodes(limit: int = 100) dict
Gets playlist items for the ‘Liked Songs’ playlist
- Parameters:
limit – How many items to return. Default: 100
- Returns:
List of playlistItem dictionaries. See
get_playlist()
- YTMusic.get_history() list[dict]
Gets your play history in reverse chronological order
- Returns:
List of playlistItems, see
get_playlist()
The additional propertyplayed
indicates when the playlistItem was played The additional propertyfeedbackToken
can be used to remove items withremove_history_items()
- YTMusic.add_history_item(song)
Add an item to the account’s history using the playbackTracking URI obtained from
get_song()
. A204
return code indicates success.Usage:
song = yt_auth.get_song(videoId) response = yt_auth.add_history_item(song)
Note
You need to use the same YTMusic instance as you used for
get_song()
.- Parameters:
song – Dictionary as returned by
get_song()
- Returns:
Full response. response.status_code is 204 if successful
- YTMusic.remove_history_items(feedbackTokens: list[str]) dict
Remove an item from the account’s history. This method does currently not work with brand accounts
- Parameters:
feedbackTokens – Token to identify the item to remove, obtained from
get_history()
- Returns:
Full response
- YTMusic.rate_song(videoId: str, rating: str = 'INDIFFERENT') dict | None
Rates a song (“thumbs up”/”thumbs down” interactions on YouTube Music)
- Parameters:
videoId – Video id
rating –
One of
LIKE
,DISLIKE
,INDIFFERENT
INDIFFERENT
removes the previous rating and assigns no rating
- Returns:
Full response
- YTMusic.edit_song_library_status(feedbackTokens: list[str] | None = None) dict
Adds or removes a song from your library depending on the token provided.
- Parameters:
feedbackTokens – List of feedbackTokens obtained from authenticated requests to endpoints that return songs (i.e.
get_album()
)- Returns:
Full response
- YTMusic.rate_playlist(playlistId: str, rating: str = 'INDIFFERENT') dict
Rates a playlist/album (“Add to library”/”Remove from library” interactions on YouTube Music) You can also dislike a playlist/album, which has an effect on your recommendations
- Parameters:
playlistId – Playlist id
rating –
One of
LIKE
,DISLIKE
,INDIFFERENT
INDIFFERENT
removes the playlist/album from the library
- Returns:
Full response
- YTMusic.subscribe_artists(channelIds: list[str]) dict
Subscribe to artists. Adds the artists to your library
- Parameters:
channelIds – Artist channel ids
- Returns:
Full response
- YTMusic.unsubscribe_artists(channelIds: list[str]) dict
Unsubscribe from artists. Removes the artists from your library
- Parameters:
channelIds – Artist channel ids
- Returns:
Full response
- YTMusic.get_account_info() dict
Gets information about the currently authenticated user’s account.
- Returns:
Dictionary with user’s account name, channel handle, and URL of their account photo.
Example:
{ "accountName": "Sample User", "channelHandle": "@SampleUser "accountPhotoUrl": "https://yt3.ggpht.com/sample-user-photo" }