[GH-ISSUE #129] [Bug Report] AttributeError: 'Track' object has no attribute 'tree' #112

Closed
opened 2026-02-27 04:57:35 +03:00 by kerem · 2 comments
Owner

Originally created by @DerKO9 on GitHub (Dec 10, 2025).
Original GitHub issue: https://github.com/Googolplexed0/zotify/issues/129

Originally assigned to: @Googolplexed0 on GitHub.

Zotify Version
v0.10.29 efficient-api

Bug Description
I am getting a 'Track' object has no attribute 'tree' error today when I didn't get this error yesterday. I am not sure what changed. This error happens on my Ubuntu machine but I also tried it on my Windows machine (with the same version) and I got the same error. I reverted the zotify installation to the old main branch (v0.9.31) and that version is still working for me.

Bug Triggering Command
zotify https://open.spotify.com/track/0PsbWiVtix5FoTZ1s00mEl --debug

Error Traceback / Logs

DEBUG.log file:

DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): apresolve.spotify.com:443
DEBUG:urllib3.connectionpool:https://apresolve.spotify.com:443 "GET /?type=accesspoint HTTP/1.1" 200 None
INFO:Librespot:Session:Created new session! device_id: 96a47f3df1294aa48249687d77cf8e756048dd0f, ap: ap-gue1.spotify.com:443
INFO:Librespot:Session:Connection successfully!
INFO:Librespot:Session:Session.Receiver started
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): apresolve.spotify.com:443
DEBUG:urllib3.connectionpool:https://apresolve.spotify.com:443 "GET /?type=spclient HTTP/1.1" 200 None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): apresolve.spotify.com:443
INFO:Librespot:Session:Skipping 02
INFO:Librespot:Session:Received license_version: 0
INFO:Librespot:Session:Received country_code: US
DEBUG:Librespot:Session:Parsed product info: {'type': 'premium', 'ab-ad-player-targeting': '1', 'ab-watch-now': '0', 'ab_recently_played_feature_time_filter_threshold': 'com.spotify.gaia=30,driving-mode=120,spotify%3Ainternal%3Astartpage=30', 'ad-formats-preroll-video': '0', 'ad-session-persistence': '1', 'ads': '0', 'app-developer': '0', 'arsenal_country': '1', 'audio-preview-url-template': 'https://p.scdn.co/mp3-preview/{id}', 'audio-quality': '1', 'audiobook-onboarding-completed': '0', 'autoplay': '1', 'capping-bar-threshold': '3601', 'catalogue': 'premium', 'collection': '1', 'created_by_partner': None, 'employee-free-opt-in': '0', 'enable-annotations': '2', 'enable-annotations-read': '0', 'enable-crossfade': '1', 'explicit-content': '1', 'filter-explicit-content': '0', 'financial-product': 'pr:premium,tc:0,rt:v2_US_default_full-price-premium-1m_11.99_USD_default', 'head-file-caching': '1', 'head-files': '1', 'head-files-url': 'https://heads-fa-tls13.spotifycdn.com/head/{file_id}', 'high-bitrate': '1', 'image-url': 'https://i.scdn.co/image/{file_id}', 'incognito_mode_timeout': '21600', 'is_email_verified': '1', 'key-caching-auto-offline': '0', 'key-caching-max-count': '10000', 'key-caching-max-offline-seconds': '1800', 'key-memory-cache-mode': '1:15,300', 'libspotify': '1', 'license-agreements': None, 'loudness-levels': '1:-5.0,0.0,3.0:-2.0', 'metadata-link-lookup-modes': '0', 'mobile': '1', 'name': 'Spotify Premium', 'nft-disabled': '1', 'offline': '1', 'on-demand': '1', 'on-demand-trial-in-progress': '0', 'payments-initial-campaign': 'default', 'payments-locked-state': '0', 'player-license': 'premium', 'player-license-v2': 'premium', 'playlist-annotations-markup': '0', 'preferred-locale': 'en', 'prefetch-keys': '1', 'prefetch-strategy': '18', 'prefetch-window-max': '2', 'product-expiry': None, 'publish-activity': '0', 'publish-playlist': '1', 'radio': '1', 'rating-access': '1', 'remote-control': '6', 'restrict-playlist-collaboration': '0', 'send-email': '1', 'shows-collection': '1', 'shows-collection-jam': '1', 'shuffle': '0', 'shuffle-algorithm': 'FRESH', 'sidebar-navigation-enabled': '0', 'storage-size-config': '10240,90,500,3', 'streaming': '1', 'streaming-rules': None, 'ugc-abuse-report': '1', 'ugc-abuse-report-url': 'https://support.spotify.com/abuse/?uri={uri}', 'unrestricted': '1', 'video-cdn-sampling': '100', 'video-device-blacklisted': '0', 'video-manifest-url': 'https://spclient.wg.spotify.com/manifests/v6/{type}/sources/{source_id}/options/supports_drm', 'widevine-license-url': 'https://spclient.wg.spotify.com/widevine-license/v1/video/license'}
INFO:Librespot:Session:Skipping 1f
INFO:Librespot:Session:Skipping 69
DEBUG:Librespot:MercuryClient:Handling packet, cmd: 0xb5, seq: 397292038317408256, flags: b'\x01', parts: 1
DEBUG:Librespot:MercuryClient:Couldn't dispatch Mercury event seq: 397292038317408256, uri: hm://pusher/v1/connections/OTZhNDdmM2RmMTI5NGFhNDgyNDk2ODdkNzdjZjhlNzU2MDQ4ZGQwZitBUCt0Y3A6Ly8wYWIxNDE3YS5pcC5ndWUxLnNwb3RpZnkubmV0OjUwMjgrNUNDNTYxNTVBNUJBRTVERjM3NzQ1QTgyQUNFNTY2MDAwODZDODlDNEQ0RjZGMUVGRkI4QjU0N0IzNTkxQkZGMw%3D%3D, code: 200, payload: b''
DEBUG:Librespot:Session:Received 0x10: f652a9e64a6568d7c5c19e64e84b08ced802a9aa
DEBUG:urllib3.connectionpool:https://apresolve.spotify.com:443 "GET /?type=dealer HTTP/1.1" 200 None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): login5.spotify.com:443
INFO:Librespot:Session:Skipping unknown command cmd: 0x75, payload: b'\x00\x00\x01'
DEBUG:urllib3.connectionpool:https://login5.spotify.com:443 "POST /v3/login HTTP/1.1" 200 None
INFO:Librespot:TokenProvider:Login5 authentication successful, got access token
DEBUG:Librespot:TokenProvider:Using Login5 access token for scopes: ['playlist-read']
INFO:Librespot:Session:Authenticated as 31b4bkh7uz2fosme5fsc4vwoq7jy!
DEBUG:zotify.debug:

Session Initialized Successfully

DEBUG:zotify.debug:

User Subscription Type: PREMIUM

DEBUG:zotify.debug:

Request Parsed as 1 URL

DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): login5.spotify.com:443
DEBUG:urllib3.connectionpool:https://login5.spotify.com:443 "POST /v3/login HTTP/1.1" 200 None
INFO:Librespot:TokenProvider:Login5 authentication successful, got access token
DEBUG:Librespot:TokenProvider:Using Login5 access token for scopes: [('user-read-email', 'playlist-read-private', 'user-library-read', 'user-follow-read')]
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.spotify.com:443
DEBUG:urllib3.connectionpool:https://api.spotify.com:443 "GET /v1/tracks/0PsbWiVtix5FoTZ1s00mEl?market=from_token HTTP/1.1" 200 None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.spotify.com:443
DEBUG:urllib3.connectionpool:https://api.spotify.com:443 "GET /v1/artists?market=from_token&ids=4salDzkGmfycRqNUbyBphh HTTP/1.1" 200 None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.spotify.com:443
DEBUG:urllib3.connectionpool:https://api.spotify.com:443 "GET /v1/albums?market=from_token&ids=6MFIBPVrZjHjP0pPkVF3IU HTTP/1.1" 200 None
DEBUG:zotify.debug:

Total API Calls: 3


Console Output:

DEBUG
###   config_DEBUG.json saved to /home/moosen/.config/zotify   ###
###   zotify_DEBUG_2025-12-10_14-26-40.log logging to /home/moosen/ZotifyTest   ###

        [∙∙∙] Logging in...                                                                                                                                                                                                                                                             
DEBUG
Session Initialized Successfully
User Subscription Type: PREMIUM
Request Parsed as 1 URL

        [∙∙∙] Fetching track information...                                                                                                                                                                                                                                                     [●∙∙] Parsing track information...                                                                                                                                                                                                                                                      [∙∙∙] Fetching bulk genre information...                                                                                                                                                                                                                                                [∙∙●] Fetching bulk track/disc total information...                                                                                                                                                                                                                             
DEBUG
Total API Calls: 3


Traceback (most recent call last):
  File "/home/moosen/.local/bin/zotify", line 7, in <module>
    sys.exit(main())
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/__main__.py", line 140, in main
    args.func(args, modes)
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/app.py", line 78, in client
    perform_query(args)
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/app.py", line 69, in perform_query
    raise e
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/app.py", line 44, in perform_query
    Query(Zotify.DATETIME_LAUNCH).request(urls).execute()
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 1724, in execute
    self.download()
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 1660, in download
    skipped = {d for d in self.downloadables if d.check_skippable()}
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 1660, in <setcomp>
    skipped = {d for d in self.downloadables if d.check_skippable()}
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 912, in check_skippable
    super().check_skippable()
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 398, in check_skippable
    self.in_global_archive = self.id in get_archived_item_ids()
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/utils.py", line 322, in get_archived_item_ids
    entries = get_archived_entries(dir_path)
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/utils.py", line 314, in get_archived_entries
    upgrade_legacy_archive(entries, archive_path)
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/utils.py", line 275, in upgrade_legacy_archive
    test_track = Track(entry_items[0])
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 533, in __init__
    super().__init__(id_or_uri, parent)
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 354, in __init__
    super().__init__(id_or_uri, parent)
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 195, in __init__
    self.tree = Tree(self.parent, self)
  File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 138, in __init__
    self.subContent: set[Content] = self.query.tree.subContent
AttributeError: 'Track' object has no attribute 'tree'

Config File
Embeded config.json file here. Even better if its a config_DEBUG.json.

{
    "DEBUG": "True",
    "ROOT_PATH": "~/ZotifyTest",
    "SAVE_CREDENTIALS": "True",
    "CREDENTIALS_LOCATION": "~/.config/zotify",
    "OUTPUT": "{artist}_{song_name}_{id}",
    "OUTPUT_SINGLE": "{artist}_{song_name}_{id}",
    "OUTPUT_ALBUM": "{artist}_{song_name}_{id}",
    "OUTPUT_PLAYLIST_EXT": "{artist}_{song_name}_{id}",
    "OUTPUT_LIKED_SONGS": "{artist}_{song_name}_{id}",
    "ROOT_PODCAST_PATH": "~/Music/Zotify Podcasts",
    "SPLIT_ALBUM_DISCS": "False",
    "MAX_FILENAME_LENGTH": "0",
    "OPTIMIZED_DOWNLOADING": "True",
    "BULK_WAIT_TIME": "30",
    "DOWNLOAD_REAL_TIME": "False",
    "TEMP_DOWNLOAD_DIR": "",
    "DOWNLOAD_PARENT_ALBUM": "False",
    "NO_COMPILATION_ALBUMS": "False",
    "REGEX_ENABLED": "False",
    "REGEX_TRACK_SKIP": "",
    "REGEX_EPISODE_SKIP": "",
    "REGEX_ALBUM_SKIP": "",
    "DOWNLOAD_FORMAT": "copy",
    "DOWNLOAD_QUALITY": "very_high",
    "TRANSCODE_BITRATE": "auto",
    "CUSTOM_FFMEPG_ARGS": "",
    "SONG_ARCHIVE_LOCATION": "",
    "DISABLE_SONG_ARCHIVE": "False",
    "DISABLE_DIRECTORY_ARCHIVES": "False",
    "SKIP_EXISTING": "True",
    "SKIP_PREVIOUSLY_DOWNLOADED": "False",
    "EXPORT_M3U8": "True",
    "M3U8_LOCATION": "~/ZotifyTest/playlists",
    "M3U8_REL_PATHS": "True",
    "LIKED_SONGS_ARCHIVE_M3U8": "True",
    "DOWNLOAD_LYRICS": "True",
    "LYRICS_LOCATION": "~/ZotifyTest/lyrics",
    "LYRICS_FILENAME": "{artist}_{song_name}_{id}",
    "ALWAYS_CHECK_LYRICS": "False",
    "LYRICS_MD_HEADER": "False",
    "LANGUAGE": "en",
    "STRICT_LIBRARY_VERIFY": "True",
    "MD_DISC_TRACK_TOTALS": "True",
    "MD_SAVE_GENRES": "True",
    "MD_ALLGENRES": "True",
    "MD_GENREDELIMITER": "",
    "MD_ARTISTDELIMITER": "",
    "MD_SAVE_LYRICS": "True",
    "ALBUM_ART_JPG_FILE": "False",
    "SEARCH_QUERY_SIZE": "10",
    "RETRY_ATTEMPTS": "3",
    "CHUNK_SIZE": "20000",
    "REDIRECT_ADDRESS": "127.0.0.1",
    "PRINT_SPLASH": "False",
    "PRINT_PROGRESS_INFO": "True",
    "PRINT_SKIPS": "True",
    "PRINT_DOWNLOADS": "True",
    "PRINT_DOWNLOAD_PROGRESS": "True",
    "PRINT_URL_PROGRESS": "True",
    "PRINT_ALBUM_PROGRESS": "True",
    "PRINT_ARTIST_PROGRESS": "True",
    "PRINT_PLAYLIST_PROGRESS": "True",
    "PRINT_WARNINGS": "True",
    "PRINT_ERRORS": "True",
    "PRINT_API_ERRORS": "True",
    "STANDARD_INTERFACE": "False",
    "FFMPEG_LOG_LEVEL": "error"
}

Additional Context
All playlists and tracks are returning the same error

Originally created by @DerKO9 on GitHub (Dec 10, 2025). Original GitHub issue: https://github.com/Googolplexed0/zotify/issues/129 Originally assigned to: @Googolplexed0 on GitHub. **Zotify Version** v0.10.29 efficient-api **Bug Description** I am getting a `'Track' object has no attribute 'tree'` error today when I didn't get this error yesterday. I am not sure what changed. This error happens on my Ubuntu machine but I also tried it on my Windows machine (with the same version) and I got the same error. I reverted the zotify installation to the old main branch (v0.9.31) and that version is still working for me. **Bug Triggering Command** zotify https://open.spotify.com/track/0PsbWiVtix5FoTZ1s00mEl --debug **Error Traceback / Logs** DEBUG.log file: ``` DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): apresolve.spotify.com:443 DEBUG:urllib3.connectionpool:https://apresolve.spotify.com:443 "GET /?type=accesspoint HTTP/1.1" 200 None INFO:Librespot:Session:Created new session! device_id: 96a47f3df1294aa48249687d77cf8e756048dd0f, ap: ap-gue1.spotify.com:443 INFO:Librespot:Session:Connection successfully! INFO:Librespot:Session:Session.Receiver started DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): apresolve.spotify.com:443 DEBUG:urllib3.connectionpool:https://apresolve.spotify.com:443 "GET /?type=spclient HTTP/1.1" 200 None DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): apresolve.spotify.com:443 INFO:Librespot:Session:Skipping 02 INFO:Librespot:Session:Received license_version: 0 INFO:Librespot:Session:Received country_code: US DEBUG:Librespot:Session:Parsed product info: {'type': 'premium', 'ab-ad-player-targeting': '1', 'ab-watch-now': '0', 'ab_recently_played_feature_time_filter_threshold': 'com.spotify.gaia=30,driving-mode=120,spotify%3Ainternal%3Astartpage=30', 'ad-formats-preroll-video': '0', 'ad-session-persistence': '1', 'ads': '0', 'app-developer': '0', 'arsenal_country': '1', 'audio-preview-url-template': 'https://p.scdn.co/mp3-preview/{id}', 'audio-quality': '1', 'audiobook-onboarding-completed': '0', 'autoplay': '1', 'capping-bar-threshold': '3601', 'catalogue': 'premium', 'collection': '1', 'created_by_partner': None, 'employee-free-opt-in': '0', 'enable-annotations': '2', 'enable-annotations-read': '0', 'enable-crossfade': '1', 'explicit-content': '1', 'filter-explicit-content': '0', 'financial-product': 'pr:premium,tc:0,rt:v2_US_default_full-price-premium-1m_11.99_USD_default', 'head-file-caching': '1', 'head-files': '1', 'head-files-url': 'https://heads-fa-tls13.spotifycdn.com/head/{file_id}', 'high-bitrate': '1', 'image-url': 'https://i.scdn.co/image/{file_id}', 'incognito_mode_timeout': '21600', 'is_email_verified': '1', 'key-caching-auto-offline': '0', 'key-caching-max-count': '10000', 'key-caching-max-offline-seconds': '1800', 'key-memory-cache-mode': '1:15,300', 'libspotify': '1', 'license-agreements': None, 'loudness-levels': '1:-5.0,0.0,3.0:-2.0', 'metadata-link-lookup-modes': '0', 'mobile': '1', 'name': 'Spotify Premium', 'nft-disabled': '1', 'offline': '1', 'on-demand': '1', 'on-demand-trial-in-progress': '0', 'payments-initial-campaign': 'default', 'payments-locked-state': '0', 'player-license': 'premium', 'player-license-v2': 'premium', 'playlist-annotations-markup': '0', 'preferred-locale': 'en', 'prefetch-keys': '1', 'prefetch-strategy': '18', 'prefetch-window-max': '2', 'product-expiry': None, 'publish-activity': '0', 'publish-playlist': '1', 'radio': '1', 'rating-access': '1', 'remote-control': '6', 'restrict-playlist-collaboration': '0', 'send-email': '1', 'shows-collection': '1', 'shows-collection-jam': '1', 'shuffle': '0', 'shuffle-algorithm': 'FRESH', 'sidebar-navigation-enabled': '0', 'storage-size-config': '10240,90,500,3', 'streaming': '1', 'streaming-rules': None, 'ugc-abuse-report': '1', 'ugc-abuse-report-url': 'https://support.spotify.com/abuse/?uri={uri}', 'unrestricted': '1', 'video-cdn-sampling': '100', 'video-device-blacklisted': '0', 'video-manifest-url': 'https://spclient.wg.spotify.com/manifests/v6/{type}/sources/{source_id}/options/supports_drm', 'widevine-license-url': 'https://spclient.wg.spotify.com/widevine-license/v1/video/license'} INFO:Librespot:Session:Skipping 1f INFO:Librespot:Session:Skipping 69 DEBUG:Librespot:MercuryClient:Handling packet, cmd: 0xb5, seq: 397292038317408256, flags: b'\x01', parts: 1 DEBUG:Librespot:MercuryClient:Couldn't dispatch Mercury event seq: 397292038317408256, uri: hm://pusher/v1/connections/OTZhNDdmM2RmMTI5NGFhNDgyNDk2ODdkNzdjZjhlNzU2MDQ4ZGQwZitBUCt0Y3A6Ly8wYWIxNDE3YS5pcC5ndWUxLnNwb3RpZnkubmV0OjUwMjgrNUNDNTYxNTVBNUJBRTVERjM3NzQ1QTgyQUNFNTY2MDAwODZDODlDNEQ0RjZGMUVGRkI4QjU0N0IzNTkxQkZGMw%3D%3D, code: 200, payload: b'' DEBUG:Librespot:Session:Received 0x10: f652a9e64a6568d7c5c19e64e84b08ced802a9aa DEBUG:urllib3.connectionpool:https://apresolve.spotify.com:443 "GET /?type=dealer HTTP/1.1" 200 None DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): login5.spotify.com:443 INFO:Librespot:Session:Skipping unknown command cmd: 0x75, payload: b'\x00\x00\x01' DEBUG:urllib3.connectionpool:https://login5.spotify.com:443 "POST /v3/login HTTP/1.1" 200 None INFO:Librespot:TokenProvider:Login5 authentication successful, got access token DEBUG:Librespot:TokenProvider:Using Login5 access token for scopes: ['playlist-read'] INFO:Librespot:Session:Authenticated as 31b4bkh7uz2fosme5fsc4vwoq7jy! DEBUG:zotify.debug: Session Initialized Successfully DEBUG:zotify.debug: User Subscription Type: PREMIUM DEBUG:zotify.debug: Request Parsed as 1 URL DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): login5.spotify.com:443 DEBUG:urllib3.connectionpool:https://login5.spotify.com:443 "POST /v3/login HTTP/1.1" 200 None INFO:Librespot:TokenProvider:Login5 authentication successful, got access token DEBUG:Librespot:TokenProvider:Using Login5 access token for scopes: [('user-read-email', 'playlist-read-private', 'user-library-read', 'user-follow-read')] DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.spotify.com:443 DEBUG:urllib3.connectionpool:https://api.spotify.com:443 "GET /v1/tracks/0PsbWiVtix5FoTZ1s00mEl?market=from_token HTTP/1.1" 200 None DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.spotify.com:443 DEBUG:urllib3.connectionpool:https://api.spotify.com:443 "GET /v1/artists?market=from_token&ids=4salDzkGmfycRqNUbyBphh HTTP/1.1" 200 None DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.spotify.com:443 DEBUG:urllib3.connectionpool:https://api.spotify.com:443 "GET /v1/albums?market=from_token&ids=6MFIBPVrZjHjP0pPkVF3IU HTTP/1.1" 200 None DEBUG:zotify.debug: Total API Calls: 3 ``` Console Output: ``` DEBUG ### config_DEBUG.json saved to /home/moosen/.config/zotify ### ### zotify_DEBUG_2025-12-10_14-26-40.log logging to /home/moosen/ZotifyTest ### [∙∙∙] Logging in... DEBUG Session Initialized Successfully User Subscription Type: PREMIUM Request Parsed as 1 URL [∙∙∙] Fetching track information... [●∙∙] Parsing track information... [∙∙∙] Fetching bulk genre information... [∙∙●] Fetching bulk track/disc total information... DEBUG Total API Calls: 3 Traceback (most recent call last): File "/home/moosen/.local/bin/zotify", line 7, in <module> sys.exit(main()) File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/__main__.py", line 140, in main args.func(args, modes) File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/app.py", line 78, in client perform_query(args) File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/app.py", line 69, in perform_query raise e File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/app.py", line 44, in perform_query Query(Zotify.DATETIME_LAUNCH).request(urls).execute() File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 1724, in execute self.download() File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 1660, in download skipped = {d for d in self.downloadables if d.check_skippable()} File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 1660, in <setcomp> skipped = {d for d in self.downloadables if d.check_skippable()} File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 912, in check_skippable super().check_skippable() File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 398, in check_skippable self.in_global_archive = self.id in get_archived_item_ids() File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/utils.py", line 322, in get_archived_item_ids entries = get_archived_entries(dir_path) File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/utils.py", line 314, in get_archived_entries upgrade_legacy_archive(entries, archive_path) File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/utils.py", line 275, in upgrade_legacy_archive test_track = Track(entry_items[0]) File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 533, in __init__ super().__init__(id_or_uri, parent) File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 354, in __init__ super().__init__(id_or_uri, parent) File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 195, in __init__ self.tree = Tree(self.parent, self) File "/home/moosen/.local/share/pipx/venvs/zotify/lib/python3.10/site-packages/zotify/api.py", line 138, in __init__ self.subContent: set[Content] = self.query.tree.subContent AttributeError: 'Track' object has no attribute 'tree' ``` **Config File** Embeded `config.json` file here. Even better if its a `config_DEBUG.json`. ``` { "DEBUG": "True", "ROOT_PATH": "~/ZotifyTest", "SAVE_CREDENTIALS": "True", "CREDENTIALS_LOCATION": "~/.config/zotify", "OUTPUT": "{artist}_{song_name}_{id}", "OUTPUT_SINGLE": "{artist}_{song_name}_{id}", "OUTPUT_ALBUM": "{artist}_{song_name}_{id}", "OUTPUT_PLAYLIST_EXT": "{artist}_{song_name}_{id}", "OUTPUT_LIKED_SONGS": "{artist}_{song_name}_{id}", "ROOT_PODCAST_PATH": "~/Music/Zotify Podcasts", "SPLIT_ALBUM_DISCS": "False", "MAX_FILENAME_LENGTH": "0", "OPTIMIZED_DOWNLOADING": "True", "BULK_WAIT_TIME": "30", "DOWNLOAD_REAL_TIME": "False", "TEMP_DOWNLOAD_DIR": "", "DOWNLOAD_PARENT_ALBUM": "False", "NO_COMPILATION_ALBUMS": "False", "REGEX_ENABLED": "False", "REGEX_TRACK_SKIP": "", "REGEX_EPISODE_SKIP": "", "REGEX_ALBUM_SKIP": "", "DOWNLOAD_FORMAT": "copy", "DOWNLOAD_QUALITY": "very_high", "TRANSCODE_BITRATE": "auto", "CUSTOM_FFMEPG_ARGS": "", "SONG_ARCHIVE_LOCATION": "", "DISABLE_SONG_ARCHIVE": "False", "DISABLE_DIRECTORY_ARCHIVES": "False", "SKIP_EXISTING": "True", "SKIP_PREVIOUSLY_DOWNLOADED": "False", "EXPORT_M3U8": "True", "M3U8_LOCATION": "~/ZotifyTest/playlists", "M3U8_REL_PATHS": "True", "LIKED_SONGS_ARCHIVE_M3U8": "True", "DOWNLOAD_LYRICS": "True", "LYRICS_LOCATION": "~/ZotifyTest/lyrics", "LYRICS_FILENAME": "{artist}_{song_name}_{id}", "ALWAYS_CHECK_LYRICS": "False", "LYRICS_MD_HEADER": "False", "LANGUAGE": "en", "STRICT_LIBRARY_VERIFY": "True", "MD_DISC_TRACK_TOTALS": "True", "MD_SAVE_GENRES": "True", "MD_ALLGENRES": "True", "MD_GENREDELIMITER": "", "MD_ARTISTDELIMITER": "", "MD_SAVE_LYRICS": "True", "ALBUM_ART_JPG_FILE": "False", "SEARCH_QUERY_SIZE": "10", "RETRY_ATTEMPTS": "3", "CHUNK_SIZE": "20000", "REDIRECT_ADDRESS": "127.0.0.1", "PRINT_SPLASH": "False", "PRINT_PROGRESS_INFO": "True", "PRINT_SKIPS": "True", "PRINT_DOWNLOADS": "True", "PRINT_DOWNLOAD_PROGRESS": "True", "PRINT_URL_PROGRESS": "True", "PRINT_ALBUM_PROGRESS": "True", "PRINT_ARTIST_PROGRESS": "True", "PRINT_PLAYLIST_PROGRESS": "True", "PRINT_WARNINGS": "True", "PRINT_ERRORS": "True", "PRINT_API_ERRORS": "True", "STANDARD_INTERFACE": "False", "FFMPEG_LOG_LEVEL": "error" } ``` **Additional Context** All playlists and tracks are returning the same error
kerem 2026-02-27 04:57:35 +03:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@Googolplexed0 commented on GitHub (Dec 12, 2025):

Should be fixed with github.com/Googolplexed0/zotify@2fef6dc9f2.

<!-- gh-comment-id:3644864424 --> @Googolplexed0 commented on GitHub (Dec 12, 2025): Should be fixed with https://github.com/Googolplexed0/zotify/commit/2fef6dc9f2d76a0986ceeb468d009a4633e89512.
Author
Owner

@DerKO9 commented on GitHub (Dec 15, 2025):

I have updated and it is working on both my machines now, thanks!

<!-- gh-comment-id:3656972438 --> @DerKO9 commented on GitHub (Dec 15, 2025): I have updated and it is working on both my machines now, thanks!
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/zotify#112
No description provided.