[GH-ISSUE #613] get_album() fails if the album artist is 'Various Artists' #423

Closed
opened 2026-02-27 23:00:43 +03:00 by kerem · 1 comment
Owner

Originally created by @RazorTwig on GitHub (Jul 1, 2024).
Original GitHub issue: https://github.com/sigma67/ytmusicapi/issues/613

This seems to occur only when I attempt to run get_album on an album which shows 'Various Artists' as the album artist. 'Various Artists' doesn't come with a 'browseId' field (or even a 'navigationEndpoint' field) to parse, so the attempt to get the browseId throws the error below. if I use search() to find the album, it correctly returns name='Various Artists', id=None so it is parsing it correctly elsewhere.

I can do this with other albums which are 'Various Artists', but the one that showed up first is 'Bass Dreams, Vol. 3', album id 'MPREb_VpY0Pu4Fle2'. Just run get_album with any album id for any 'Various Artists' album and it'll fail.

Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\ytmusicapi\navigation.py", line 106, in nav
    root = root[k]
           ~~~~^^^
KeyError: 'navigationEndpoint'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\user\Documents\Personal\MusicTools\git-MusicTools\utils\ytmusic.py", line 53, in get_playlist_tracks
    tracks = [self.get_virtual_track(track) for track in raw_tracks]
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\Documents\Personal\MusicTools\git-MusicTools\utils\ytmusic.py", line 73, in get_virtual_track
    yt_album = self.yt.get_album(album_id)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\ytmusicapi\mixins\browsing.py", line 521, in get_album
    album = parse_album_header_2024(response)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\ytmusicapi\parsers\albums.py", line 54, in parse_album_header_2024
    album_info["artists"] = [parse_base_header(header)["author"]]
                             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\ytmusicapi\parsers\podcasts.py", line 67, in parse_base_header
    "id": nav(strapline, ["runs", 0, *NAVIGATION_BROWSE_ID]),
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\ytmusicapi\navigation.py", line 110, in nav
    raise type(e)(f"Unable to find '{k}' using path {items!r} on {root!r}, exception: {e}")
KeyError: "Unable to find 'navigationEndpoint' using path ['runs', 0, 'navigationEndpoint', 'browseEndpoint', 'browseId'] on {'text': 'Various Artists'}, exception: 'navigationEndpoint'"

header that it's trying to parse:

{
    "thumbnail":
    {...},
    "buttons":
    [...],
    "title":
    {...},
    "subtitle":
    {...},
    "trackingParams": "CAQQneEIGAAiEwi1tIyukIaHAxWemeQGHRv9BC8=",
    "straplineTextOne":
    {
        "runs":
        [
            {
                "text": "Various Artists"
            }
        ]
    },
    "subtitleBadge":
    [...],
    "secondSubtitle":
    {...}
}

edit: Not simply 'Various Artists', but any time the artist doesn't have a profile to link back to. For instance, the EP 'Different Ways' by DJ Disrespect does not link back to any artist profile so there is no browseId to link back to the artist and it fails for that as well. (album id 'MPREb_KD7lv9ifzCH')

Originally created by @RazorTwig on GitHub (Jul 1, 2024). Original GitHub issue: https://github.com/sigma67/ytmusicapi/issues/613 This seems to occur only when I attempt to run get_album on an album which shows 'Various Artists' as the album artist. 'Various Artists' doesn't come with a 'browseId' field (or even a 'navigationEndpoint' field) to parse, so the attempt to get the browseId throws the error below. if I use search() to find the album, it correctly returns name='Various Artists', id=None so it is parsing it correctly elsewhere. I can do this with other albums which are 'Various Artists', but the one that showed up first is 'Bass Dreams, Vol. 3', album id 'MPREb_VpY0Pu4Fle2'. Just run get_album with any album id for any 'Various Artists' album and it'll fail. ``` Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\ytmusicapi\navigation.py", line 106, in nav root = root[k] ~~~~^^^ KeyError: 'navigationEndpoint' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\user\Documents\Personal\MusicTools\git-MusicTools\utils\ytmusic.py", line 53, in get_playlist_tracks tracks = [self.get_virtual_track(track) for track in raw_tracks] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\user\Documents\Personal\MusicTools\git-MusicTools\utils\ytmusic.py", line 73, in get_virtual_track yt_album = self.yt.get_album(album_id) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\ytmusicapi\mixins\browsing.py", line 521, in get_album album = parse_album_header_2024(response) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\ytmusicapi\parsers\albums.py", line 54, in parse_album_header_2024 album_info["artists"] = [parse_base_header(header)["author"]] ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\ytmusicapi\parsers\podcasts.py", line 67, in parse_base_header "id": nav(strapline, ["runs", 0, *NAVIGATION_BROWSE_ID]), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\ytmusicapi\navigation.py", line 110, in nav raise type(e)(f"Unable to find '{k}' using path {items!r} on {root!r}, exception: {e}") KeyError: "Unable to find 'navigationEndpoint' using path ['runs', 0, 'navigationEndpoint', 'browseEndpoint', 'browseId'] on {'text': 'Various Artists'}, exception: 'navigationEndpoint'" ``` header that it's trying to parse: ``` { "thumbnail": {...}, "buttons": [...], "title": {...}, "subtitle": {...}, "trackingParams": "CAQQneEIGAAiEwi1tIyukIaHAxWemeQGHRv9BC8=", "straplineTextOne": { "runs": [ { "text": "Various Artists" } ] }, "subtitleBadge": [...], "secondSubtitle": {...} } ``` edit: Not simply 'Various Artists', but any time the artist doesn't have a profile to link back to. For instance, the EP 'Different Ways' by DJ Disrespect does not link back to any artist profile so there is no browseId to link back to the artist and it fails for that as well. (album id 'MPREb_KD7lv9ifzCH')
kerem 2026-02-27 23:00:43 +03:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@sigma67 commented on GitHub (Jul 3, 2024):

PR welcome

<!-- gh-comment-id:2207191853 --> @sigma67 commented on GitHub (Jul 3, 2024): PR welcome
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/ytmusicapi#423
No description provided.