exislow / tidal-dl-ng

TIDAL Media Downloader Next Generation! Up to HiRes Lossless / TIDAL MAX 24-bit, 192 kHz.
GNU Affero General Public License v3.0
354 stars 34 forks source link

Error while Downloading Track: track.album issues #35

Closed Dialgatrainer02 closed 8 months ago

Dialgatrainer02 commented 8 months ago

Let us check, if you are already logged in... Yep, looks good! You are logged in.
╭─────────────────────────────────── Download Progress ───────────────────────────────────╮
│                                                                                         │
│                                                                                         │
│  Item 'The Score, Travis Barker - All'   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%  │
│                                                                                         │
│                                                                                         │
╰─────────────────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/cli.py:176 in download      │
│                                                                                                  │
│   173 │   │   with Live(progress_table, refresh_per_second=10):                                  │
│   174 │   │   │   # Download media.                                                              │
│   175 │   │   │   if media_type in [MediaType.TRACK, MediaType.VIDEO]:                           │
│ ❱ 176 │   │   │   │   dl.item(                                                                   │
│   177 │   │   │   │   │   media_id=item_id,                                                      │
│   178 │   │   │   │   │   media_type=media_type,                                                 │
│   179 │   │   │   │   │   file_template=file_template,                                           │
│                                                                                                  │
│ ╭─────────────────────────────────────── locals ───────────────────────────────────────╮         │
│ │            ctx = <click.core.Context object at 0x7251e7cfa890>                       │         │
│ │             dl = <tidal_dl_ng.download.Download object at 0x7251e7d0d050>            │         │
│ │  file_template = 'Tracks/{artist_name} - {track_title}'                              │         │
│ │      fn_logger = <tidal_dl_ng.helper.wrapper.LoggerWrapped object at 0x7251e7d0e550> │         │
│ │           item = 'https://tidal.com/browse/track/152668960'                          │         │
│ │        item_id = '152668960'                                                         │         │
│ │      list_urls = None                                                                │         │
│ │     media_type = <MediaType.TRACK: 'track'>                                          │         │
│ │       progress = <rich.progress.Progress object at 0x7251e7d3b0d0>                   │         │
│ │ progress_table = <rich.table.Table object at 0x7251e7d0e350>                         │         │
│ │       settings = <tidal_dl_ng.config.Settings object at 0x7251e7a0b150>              │         │
│ │           urls = ['https://tidal.com/browse/track/152668960']                        │         │
│ ╰──────────────────────────────────────────────────────────────────────────────────────╯         │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:231 in item     │
│                                                                                                  │
│   228 │   │   │   with tempfile.TemporaryDirectory(ignore_cleanup_errors=True) as tmp_path_dir   │
│   229 │   │   │   │   tmp_path_file = os.path.join(tmp_path_dir, str(uuid4()) + stream_manifes   │
│   230 │   │   │   │   # Download media.                                                          │
│ ❱ 231 │   │   │   │   tmp_path_file = self._download(media=media, stream_manifest=stream_manif   │
│   232 │   │   │   │                                                                              │
│   233 │   │   │   │   if isinstance(media, Video) and self.settings.data.video_convert_mp4:      │
│   234 │   │   │   │   │   # Convert `*.ts` file to `*.mp4` using ffmpeg                          │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │      download_skip = False                                                                   │ │
│ │ file_name_relative = 'Tracks/The Score, Travis Barker - All Of Me'                           │ │
│ │      file_template = 'Tracks/{artist_name} - {track_title}'                                  │ │
│ │           manifest = 'PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48TVBEIHhtbG5zPSJ1c… │ │
│ │              media = <tidalapi.media.Track object at 0x7251e7a20a10>                         │ │
│ │           media_id = '152668960'                                                             │ │
│ │         media_type = <MediaType.TRACK: 'track'>                                              │ │
│ │          mime_type = 'application/dash+xml'                                                  │ │
│ │          path_file = '/home/olivia/Downloads/Tracks/The Score, Travis Barker - All Of        │ │
│ │                      Me.m4a'                                                                 │ │
│ │               self = <tidal_dl_ng.download.Download object at 0x7251e7d0d050>                │ │
│ │             stream = <tidalapi.media.Stream object at 0x7251e7cfaf90>                        │ │
│ │    stream_manifest = StreamManifest(                                                         │ │
│ │                      │   codecs='mp4a.40.2',                                                 │ │
│ │                      │   mime_type='audio/mp4',                                              │ │
│ │                      │   urls=[                                                              │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │   ... +32                                                         │ │
│ │                      │   ],                                                                  │ │
│ │                      │   file_extension='.m4a',                                              │ │
│ │                      │   encryption_type='NONE',                                             │ │
│ │                      │   encryption_key=None                                                 │ │
│ │                      )                                                                       │ │
│ │       tmp_path_dir = '/tmp/tmpgf0l28gy'                                                      │ │
│ │      tmp_path_file = '/tmp/tmpgf0l28gy/969e9323-1895-4308-96db-4641d6c72479.m4a'             │ │
│ │     video_download = True                                                                    │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:152 in          │
│ _download                                                                                        │
│                                                                                                  │
│   149 │   │                                                                                      │
│   150 │   │   # Write metadata to file.                                                          │
│   151 │   │   if not isinstance(media, Video):                                                   │
│ ❱ 152 │   │   │   self.metadata_write(media, tmp_path_file_decrypted)                            │
│   153 │   │                                                                                      │
│   154 │   │   return tmp_path_file_decrypted                                                     │
│   155                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │              block_size = None                                                               │ │
│ │                    data = b'\x00\x00\x05\x94moof\x00\x00\x00\x10mfhd\x00\x00\x00\x00\x00\x0… │ │
│ │                       f = <_io.BufferedWriter                                                │ │
│ │                           name='/tmp/tmpgf0l28gy/969e9323-1895-4308-96db-4641d6c72479.m4a'>  │ │
│ │                   media = <tidalapi.media.Track object at 0x7251e7a20a10>                    │ │
│ │              media_name = 'The Score, Travis Barker - All Of Me'                             │ │
│ │        needs_decryption = False                                                              │ │
│ │                  p_task = 0                                                                  │ │
│ │               path_file = '/tmp/tmpgf0l28gy/969e9323-1895-4308-96db-4641d6c72479.m4a'        │ │
│ │         progress_stdout = True                                                               │ │
│ │          progress_total = 42                                                                 │ │
│ │                       r = <Response [200]>                                                   │ │
│ │                    self = <tidal_dl_ng.download.Download object at 0x7251e7d0d050>           │ │
│ │         stream_manifest = StreamManifest(                                                    │ │
│ │                           │   codecs='mp4a.40.2',                                            │ │
│ │                           │   mime_type='audio/mp4',                                         │ │
│ │                           │   urls=[                                                         │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │   ... +32                                                    │ │
│ │                           │   ],                                                             │ │
│ │                           │   file_extension='.m4a',                                         │ │
│ │                           │   encryption_type='NONE',                                        │ │
│ │                           │   encryption_key=None                                            │ │
│ │                           )                                                                  │ │
│ │ tmp_path_file_decrypted = '/tmp/tmpgf0l28gy/969e9323-1895-4308-96db-4641d6c72479.m4a'        │ │
│ │                     url = 'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │              urls_count = 42                                                                 │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:289 in          │
│ metadata_write                                                                                   │
│                                                                                                  │
│   286 │   │   │   ),                                                                             │
│   287 │   │   )                                                                                  │
│   288 │   │                                                                                      │
│ ❱ 289 │   │   m.save()                                                                           │
│   290 │   │                                                                                      │
│   291 │   │   result = True                                                                      │
│   292                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────── locals ───────────────────────────────────╮                 │
│ │   copy_right = '℗ 2020 Republic Records, a division of UMG Recordings, Inc.' │                 │
│ │         isrc = 'USUM72014229'                                                │                 │
│ │       lyrics = ''                                                            │                 │
│ │            m = <tidal_dl_ng.metadata.Metadata object at 0x7251e7a629d0>      │                 │
│ │    path_file = '/tmp/tmpgf0l28gy/969e9323-1895-4308-96db-4641d6c72479.m4a'   │                 │
│ │ release_date = ''                                                            │                 │
│ │       result = False                                                         │                 │
│ │         self = <tidal_dl_ng.download.Download object at 0x7251e7d0d050>      │                 │
│ │        track = <tidalapi.media.Track object at 0x7251e7a20a10>               │                 │
│ ╰──────────────────────────────────────────────────────────────────────────────╯                 │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/metadata.py:97 in save      │
│                                                                                                  │
│    94 │   │   elif isinstance(self.m, mutagen.mp3.MP3):                                          │
│    95 │   │   │   self.set_mp3()                                                                 │
│    96 │   │   elif isinstance(self.m, mutagen.mp4.MP4):                                          │
│ ❱  97 │   │   │   self.set_mp4()                                                                 │
│    98 │   │                                                                                      │
│    99 │   │   self._cover()                                                                      │
│   100 │   │   self.m.save()                                                                      │
│                                                                                                  │
│ ╭──────────────────────────── locals ─────────────────────────────╮                              │
│ │ self = <tidal_dl_ng.metadata.Metadata object at 0x7251e7a629d0> │                              │
│ ╰─────────────────────────────────────────────────────────────────╯                              │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/metadata.py:134 in set_mp4  │
│                                                                                                  │
│   131 │                                                                                          │
│   132 │   def set_mp4(self):                                                                     │
│   133 │   │   self.m.tags["\xa9nam"] = self.title                                                │
│ ❱ 134 │   │   self.m.tags["\xa9alb"] = self.album                                                │
│   135 │   │   self.m.tags["aART"] = self.albumartist                                             │
│   136 │   │   self.m.tags["\xa9ART"] = ", ".join(self.artists) if self.artists else ""           │
│   137 │   │   self.m.tags["cprt"] = self.copy_right                                              │
│                                                                                                  │
│ ╭──────────────────────────── locals ─────────────────────────────╮                              │
│ │ self = <tidal_dl_ng.metadata.Metadata object at 0x7251e7a629d0> │                              │
│ ╰─────────────────────────────────────────────────────────────────╯                              │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:372 in          │
│ __setitem__                                                                                      │
│                                                                                                  │
│    369 │   def __setitem__(self, key, value):                                                    │
│    370 │   │   if not isinstance(key, str):                                                      │
│    371 │   │   │   raise TypeError("key has to be str")                                          │
│ ❱  372 │   │   self._render(key, value)                                                          │
│    373 │   │   super(MP4Tags, self).__setitem__(key, value)                                      │
│    374 │                                                                                         │
│    375 │   @classmethod                                                                          │
│                                                                                                  │
│ ╭─────────── locals ────────────╮                                                                │
│ │   key = '©alb'                │                                                                │
│ │  self = {'©nam': 'All Of Me'} │                                                                │
│ │ value = None                  │                                                                │
│ ╰───────────────────────────────╯                                                                │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:388 in _render  │
│                                                                                                  │
│    385 │   │   │   render_func = type(self).__render_text                                        │
│    386 │   │   │   render_args = []                                                              │
│    387 │   │                                                                                     │
│ ❱  388 │   │   return render_func(self, key, value, *render_args)                                │
│    389 │                                                                                         │
│    390 │   @convert_error(IOError, error)                                                        │
│    391 │   @loadfile(writable=True)                                                              │
│                                                                                                  │
│ ╭───────────────────────────── locals ─────────────────────────────╮                             │
│ │   atom_name = b'\xa9alb'                                         │                             │
│ │         key = '©alb'                                             │                             │
│ │ render_args = ()                                                 │                             │
│ │ render_func = <function MP4Tags.__render_text at 0x7251e7a01260> │                             │
│ │        self = {'©nam': 'All Of Me'}                              │                             │
│ │       value = None                                               │                             │
│ ╰──────────────────────────────────────────────────────────────────╯                             │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:822 in          │
│ __render_text                                                                                    │
│                                                                                                  │
│    819 │   │   │   value = [value]                                                               │
│    820 │   │                                                                                     │
│    821 │   │   encoded = []                                                                      │
│ ❱  822 │   │   for v in value:                                                                   │
│    823 │   │   │   if not isinstance(v, str):                                                    │
│    824 │   │   │   │   raise TypeError("%r not str" % v)                                         │
│    825                                                                                           │
│                                                                                                  │
│ ╭───────────── locals ─────────────╮                                                             │
│ │ encoded = []                     │                                                             │
│ │   flags = <AtomDataType.UTF8: 1> │                                                             │
│ │     key = '©alb'                 │                                                             │
│ │    self = {'©nam': 'All Of Me'}  │                                                             │
│ │   value = None                   │                                                             │
│ ╰──────────────────────────────────╯                                                             │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: 'NoneType' object is not iterable```

command run "tidal-dl-ng dl https://tidal.com/browse/track/152668960" 

steps to reproduce: make a python venv and install tidal-dl-ng 
set up config as necessary
try to download a track 
exislow commented 8 months ago

Can you please paste your settings.json? Cannot re-produce this so far.

Dialgatrainer02 commented 8 months ago

settings.json

exislow commented 8 months ago

Can you reliable re-produce this error? For me it works just fine with your config. Which version of this app do you use?

Maybe it is something country specific. Anyway... Please debug this line: https://github.com/exislow/tidal-dl-ng/blob/2559913d8b9cfbaa96c51c2fbaf6952d297ea987/tidal_dl_ng/download.py#L314

I need the content of track.album.

Dialgatrainer02 commented 8 months ago

yes i can reliably reproduce app version is 0.7.1 im in the uk

i placed a breakpoint after the class m is defined whioch is the closest i could get p m = <tidal_dl_ng.metadata.Metadata object at 0x7b6859263d50>

ii was being dumb track.name is "all Of Me" track.album gives me

/home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ │
│ ng/cli.py:176 in download                                          │
│                                                                    │
│   173 │   │   with Live(progress_table, refresh_per_second=10):    │
│   174 │   │   │   # Download media.                                │
│   175 │   │   │   if media_type in [MediaType.TRACK, MediaType.VID │
│ ❱ 176 │   │   │   │   dl.item(                                     │
│   177 │   │   │   │   │   media_id=item_id,                        │
│   178 │   │   │   │   │   media_type=media_type,                   │
│   179 │   │   │   │   │   file_template=file_template,             │
│                                                                    │
│ ╭──────────────────────────── locals ────────────────────────────╮ │
│ │            ctx = <click.core.Context object at 0x75fb7ba0b4d0> │ │
│ │             dl = <tidal_dl_ng.download.Download object at      │ │
│ │                  0x75fb7bad6610>                               │ │
│ │  file_template = 'Tracks/{artist_name} - {track_title}'        │ │
│ │      fn_logger = <tidal_dl_ng.helper.wrapper.LoggerWrapped     │ │
│ │                  object at 0x75fb7bac6190>                     │ │
│ │           item = 'https://tidal.com/browse/track/152668960'    │ │
│ │        item_id = '152668960'                                   │ │
│ │      list_urls = None                                          │ │
│ │     media_type = <MediaType.TRACK: 'track'>                    │ │
│ │       progress = <rich.progress.Progress object at             │ │
│ │                  0x75fb7d3d3e90>                               │ │
│ │ progress_table = <rich.table.Table object at 0x75fb7bad6b50>   │ │
│ │       settings = <tidal_dl_ng.config.Settings object at        │ │
│ │                  0x75fb7b76e190>                               │ │
│ │           urls = ['https://tidal.com/browse/track/152668960']  │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│                                                                    │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ │
│ ng/download.py:231 in item                                         │
│                                                                    │
│   228 │   │   │   with tempfile.TemporaryDirectory(ignore_cleanup_ │
│   229 │   │   │   │   tmp_path_file = os.path.join(tmp_path_dir, s │
│   230 │   │   │   │   # Download media.                            │
│ ❱ 231 │   │   │   │   tmp_path_file = self._download(media=media,  │
│   232 │   │   │   │                                                │
│   233 │   │   │   │   if isinstance(media, Video) and self.setting │
│   234 │   │   │   │   │   # Convert `*.ts` file to `*.mp4` using f │
│                                                                    │
│ ╭──────────────────────────── locals ────────────────────────────╮ │
│ │      download_skip = False                                     │ │
│ │ file_name_relative = 'Tracks/The Score, Travis Barker - All Of │ │
│ │                      Me'                                       │ │
│ │      file_template = 'Tracks/{artist_name} - {track_title}'    │ │
│ │           manifest = 'PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0… │ │
│ │              media = <tidalapi.media.Track object at           │ │
│ │                      0x75fb7bad7b50>                           │ │
│ │           media_id = '152668960'                               │ │
│ │         media_type = <MediaType.TRACK: 'track'>                │ │
│ │          mime_type = 'application/dash+xml'                    │ │
│ │          path_file = '/home/olivia/Downloads/Tracks/The Score, │ │
│ │                      Travis Barker - All Of Me.m4a'            │ │
│ │               self = <tidal_dl_ng.download.Download object at  │ │
│ │                      0x75fb7bad6610>                           │ │
│ │             stream = <tidalapi.media.Stream object at          │ │
│ │                      0x75fb7bac66d0>                           │ │
│ │    stream_manifest = StreamManifest(                           │ │
│ │                      │   codecs='mp4a.40.2',                   │ │
│ │                      │   mime_type='audio/mp4',                │ │
│ │                      │   urls=[                                │ │
│ │                      │   │                                     │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediat… │ │
│ │                      │   │                                     │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediat… │ │
│ │                      │   │                                     │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediat… │ │
│ │                      │   │                                     │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediat… │ │
│ │                      │   │                                     │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediat… │ │
│ │                      │   │                                     │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediat… │ │
│ │                      │   │                                     │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediat… │ │
│ │                      │   │                                     │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediat… │ │
│ │                      │   │                                     │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediat… │ │
│ │                      │   │                                     │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediat… │ │
│ │                      │   │   ... +32                           │ │
│ │                      │   ],                                    │ │
│ │                      │   file_extension='.m4a',                │ │
│ │                      │   encryption_type='NONE',               │ │
│ │                      │   encryption_key=None                   │ │
│ │                      )                                         │ │
│ │       tmp_path_dir = '/tmp/tmp1h7dpi92'                        │ │
│ │      tmp_path_file = '/tmp/tmp1h7dpi92/87f7f750-1575-45fa-92c… │ │
│ │     video_download = True                                      │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│                                                                    │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ │
│ ng/download.py:152 in _download                                    │
│                                                                    │
│   149 │   │                                                        │
│   150 │   │   # Write metadata to file.                            │
│   151 │   │   if not isinstance(media, Video):                     │
│ ❱ 152 │   │   │   self.metadata_write(media, tmp_path_file_decrypt │
│   153 │   │                                                        │
│   154 │   │   return tmp_path_file_decrypted                       │
│   155                                                              │
│                                                                    │
│ ╭──────────────────────────── locals ────────────────────────────╮ │
│ │              block_size = None                                 │ │
│ │                    data = b'\x00\x00\x05\x94moof\x00\x00\x00\… │ │
│ │                       f = <_io.BufferedWriter                  │ │
│ │                           name='/tmp/tmp1h7dpi92/87f7f750-157… │ │
│ │                   media = <tidalapi.media.Track object at      │ │
│ │                           0x75fb7bad7b50>                      │ │
│ │              media_name = 'The Score, Travis Barker - All Of   │ │
│ │                           Me'                                  │ │
│ │        needs_decryption = False                                │ │
│ │                  p_task = 0                                    │ │
│ │               path_file = '/tmp/tmp1h7dpi92/87f7f750-1575-45f… │ │
│ │         progress_stdout = True                                 │ │
│ │          progress_total = 42                                   │ │
│ │                       r = <Response [200]>                     │ │
│ │                    self = <tidal_dl_ng.download.Download       │ │
│ │                           object at 0x75fb7bad6610>            │ │
│ │         stream_manifest = StreamManifest(                      │ │
│ │                           │   codecs='mp4a.40.2',              │ │
│ │                           │   mime_type='audio/mp4',           │ │
│ │                           │   urls=[                           │ │
│ │                           │   │                                │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │                           │   │                                │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │                           │   │                                │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │                           │   │                                │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │                           │   │                                │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │                           │   │                                │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │                           │   │                                │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │                           │   │                                │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │                           │   │                                │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │                           │   │                                │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │                           │   │   ... +32                      │ │
│ │                           │   ],                               │ │
│ │                           │   file_extension='.m4a',           │ │
│ │                           │   encryption_type='NONE',          │ │
│ │                           │   encryption_key=None              │ │
│ │                           )                                    │ │
│ │ tmp_path_file_decrypted = '/tmp/tmp1h7dpi92/87f7f750-1575-45f… │ │
│ │                     url = 'https://sp-ad-fa.audio.tidal.com/m… │ │
│ │              urls_count = 42                                   │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│                                                                    │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ │
│ ng/download.py:288 in metadata_write                               │
│                                                                    │
│   285 │   │   │   ),                                               │
│   286 │   │   )                                                    │
│   287 │   │   breakpoint()                                         │
│ ❱ 288 │   │   m.save()                                             │
│   289 │   │                                                        │
│   290 │   │   result = True                                        │
│   291                                                              │
│                                                                    │
│ ╭──────────────────────────── locals ────────────────────────────╮ │
│ │   copy_right = '℗ 2020 Republic Records, a division of UMG     │ │
│ │                Recordings, Inc.'                               │ │
│ │         isrc = 'USUM72014229'                                  │ │
│ │       lyrics = ''                                              │ │
│ │            m = <tidal_dl_ng.metadata.Metadata object at        │ │
│ │                0x75fb7bcaad90>                                 │ │
│ │    path_file = '/tmp/tmp1h7dpi92/87f7f750-1575-45fa-92cb-a31a… │ │
│ │ release_date = ''                                              │ │
│ │       result = False                                           │ │
│ │         self = <tidal_dl_ng.download.Download object at        │ │
│ │                0x75fb7bad6610>                                 │ │
│ │        track = <tidalapi.media.Track object at 0x75fb7bad7b50> │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│                                                                    │
│ /usr/lib/python3.11/bdb.py:90 in trace_dispatch                    │
│                                                                    │
│    87 │   │   if self.quitting:                                    │
│    88 │   │   │   return # None                                    │
│    89 │   │   if event == 'line':                                  │
│ ❱  90 │   │   │   return self.dispatch_line(frame)                 │
│    91 │   │   if event == 'call':                                  │
│    92 │   │   │   return self.dispatch_call(frame, arg)            │
│    93 │   │   if event == 'return':                                │
│                                                                    │
│ ╭──────────────────────────── locals ────────────────────────────╮ │
│ │   arg = None                                                   │ │
│ │ event = 'line'                                                 │ │
│ │ frame = <frame at 0x75fb7b7b6430, file                         │ │
│ │         '/home/olivia/tidal-dl/.venv/lib/python3.11/site-pack… │ │
│ │         line 288, code metadata_write>                         │ │
│ │  self = <pdb.Pdb object at 0x75fb7ad5c310>                     │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│                                                                    │
│ /usr/lib/python3.11/bdb.py:114 in dispatch_line                    │
│                                                                    │
│   111 │   │   Return self.trace_dispatch to continue tracing in th │
│   112 │   │   """                                                  │
│   113 │   │   if self.stop_here(frame) or self.break_here(frame):  │
│ ❱ 114 │   │   │   self.user_line(frame)                            │
│   115 │   │   │   if self.quitting: raise BdbQuit                  │
│   116 │   │   return self.trace_dispatch                           │
│   117                                                              │
│                                                                    │
│ ╭──────────────────────────── locals ────────────────────────────╮ │
│ │ frame = <frame at 0x75fb7b7b6430, file                         │ │
│ │         '/home/olivia/tidal-dl/.venv/lib/python3.11/site-pack… │ │
│ │         line 288, code metadata_write>                         │ │
│ │  self = <pdb.Pdb object at 0x75fb7ad5c310>                     │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│                                                                    │
│ /usr/lib/python3.11/pdb.py:331 in user_line                        │
│                                                                    │
│    328 │   │   │   │   return                                      │
│    329 │   │   │   self._wait_for_mainpyfile = False               │
│    330 │   │   if self.bp_commands(frame):                         │
│ ❱  331 │   │   │   self.interaction(frame, None)                   │
│    332 │                                                           │
│    333 │   def bp_commands(self, frame):                           │
│    334 │   │   """Call every command that was set for the current  │
│                                                                    │
│ ╭──────────────────────────── locals ────────────────────────────╮ │
│ │ frame = <frame at 0x75fb7b7b6430, file                         │ │
│ │         '/home/olivia/tidal-dl/.venv/lib/python3.11/site-pack… │ │
│ │         line 288, code metadata_write>                         │ │
│ │  self = <pdb.Pdb object at 0x75fb7ad5c310>                     │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│                                                                    │
│ /usr/lib/python3.11/pdb.py:426 in interaction                      │
│                                                                    │
│    423 │   │   │   self.forget()                                   │
│    424 │   │   │   return                                          │
│    425 │   │   self.print_stack_entry(self.stack[self.curindex])   │
│ ❱  426 │   │   self._cmdloop()                                     │
│    427 │   │   self.forget()                                       │
│    428 │                                                           │
│    429 │   def displayhook(self, obj):                             │
│                                                                    │
│ ╭──────────────────────────── locals ────────────────────────────╮ │
│ │     frame = <frame at 0x75fb7b7b6430, file                     │ │
│ │             '/home/olivia/tidal-dl/.venv/lib/python3.11/site-… │ │
│ │             line 288, code metadata_write>                     │ │
│ │      self = <pdb.Pdb object at 0x75fb7ad5c310>                 │ │
│ │ traceback = None                                               │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│                                                                    │
│ /usr/lib/python3.11/pdb.py:391 in _cmdloop                         │
│                                                                    │
│    388 │   │   │   │   # keyboard interrupts allow for an easy way │
│    389 │   │   │   │   # the current command, so allow them during │
│    390 │   │   │   │   self.allow_kbdint = True                    │
│ ❱  391 │   │   │   │   self.cmdloop()                              │
│    392 │   │   │   │   self.allow_kbdint = False                   │
│    393 │   │   │   │   break                                       │
│    394 │   │   │   except KeyboardInterrupt:                       │
│                                                                    │
│ ╭───────────────── locals ──────────────────╮                      │
│ │ self = <pdb.Pdb object at 0x75fb7ad5c310> │                      │
│ ╰───────────────────────────────────────────╯                      │
│                                                                    │
│ /usr/lib/python3.11/cmd.py:138 in cmdloop                          │
│                                                                    │
│   135 │   │   │   │   │   │   else:                                │
│   136 │   │   │   │   │   │   │   line = line.rstrip('\r\n')       │
│   137 │   │   │   │   line = self.precmd(line)                     │
│ ❱ 138 │   │   │   │   stop = self.onecmd(line)                     │
│   139 │   │   │   │   stop = self.postcmd(stop, line)              │
│   140 │   │   │   self.postloop()                                  │
│   141 │   │   finally:                                             │
│                                                                    │
│ ╭──────────────────────────── locals ────────────────────────────╮ │
│ │    intro = None                                                │ │
│ │     line = 'run print(track.album)'                            │ │
│ │ readline = <module 'readline' from                             │ │
│ │            '/usr/lib/python3.11/lib-dynload/readline.cpython-… │ │
│ │     self = <pdb.Pdb object at 0x75fb7ad5c310>                  │ │
│ │     stop = None                                                │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│                                                                    │
│ /usr/lib/python3.11/pdb.py:491 in onecmd                           │
│                                                                    │
│    488 │   │   a breakpoint command list definition.               │
│    489 │   │   """                                                 │
│    490 │   │   if not self.commands_defining:                      │
│ ❱  491 │   │   │   return cmd.Cmd.onecmd(self, line)               │
│    492 │   │   else:                                               │
│    493 │   │   │   return self.handle_command_def(line)            │
│    494                                                             │
│                                                                    │
│ ╭───────────────── locals ──────────────────╮                      │
│ │ line = 'run print(track.album)'           │                      │
│ │ self = <pdb.Pdb object at 0x75fb7ad5c310> │                      │
│ ╰───────────────────────────────────────────╯                      │
│                                                                    │
│ /usr/lib/python3.11/cmd.py:217 in onecmd                           │
│                                                                    │
│   214 │   │   │   │   func = getattr(self, 'do_' + cmd)            │
│   215 │   │   │   except AttributeError:                           │
│   216 │   │   │   │   return self.default(line)                    │
│ ❱ 217 │   │   │   return func(arg)                                 │
│   218 │                                                            │
│   219 │   def emptyline(self):                                     │
│   220 │   │   """Called when an empty line is entered in response  │
│                                                                    │
│ ╭──────────────────────────── locals ────────────────────────────╮ │
│ │  arg = 'print(track.album)'                                    │ │
│ │  cmd = 'run'                                                   │ │
│ │ func = <bound method Pdb.do_run of <pdb.Pdb object at          │ │
│ │        0x75fb7ad5c310>>                                        │ │
│ │ line = 'run print(track.album)'                                │ │
│ │ self = <pdb.Pdb object at 0x75fb7ad5c310>                      │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│                                                                    │
│ /usr/lib/python3.11/pdb.py:1111 in do_run                          │
│                                                                    │
│   1108 │   │   │   │   return                                      │
│   1109 │   │   │   sys.argv[:0] = argv0                            │
│   1110 │   │   # this is caught in the main debugger loop          │
│ ❱ 1111 │   │   raise Restart                                       │
│   1112 │                                                           │
│   1113 │   do_restart = do_run                                     │
│   1114                                                             │
│                                                                    │
│ ╭─────────────────────────── locals ───────────────────────────╮   │
│ │   arg = 'print(track.album)'                                 │   │
│ │ argv0 = ['/home/olivia/tidal-dl/.venv/bin/tidal-dl-ng']      │   │
│ │  self = <pdb.Pdb object at 0x75fb7ad5c310>                   │   │
│ │ shlex = <module 'shlex' from '/usr/lib/python3.11/shlex.py'> │ 
exislow commented 8 months ago

No worries. First of all, please update to the latest release.

You did great job. Can you please insert at the following line https://github.com/exislow/tidal-dl-ng/blob/2559913d8b9cfbaa96c51c2fbaf6952d297ea987/tidal_dl_ng/download.py#L306 this content?

print(vars(track))
print(vars(track.album))

Thus, it must look like this:

        if lyrics:
            self.lyrics_write_file(path_file + EXTENSION_LYRICS, lyrics)

        print(vars(track))
        print(vars(track.album))

        # `None` values are not allowed.
        m: Metadata = Metadata(

Please execute your command again and paste everything, which was printed out.

Dialgatrainer02 commented 8 months ago

added the lines and updated

 tidal-dl-ng dl https://tidal.com/browse/track/152668960
Let us check, if you are already logged in... Yep, looks good! You are logged in.
{'session': <tidalapi.session.Session object at 0x7915d427b110>, 'requests': <tidalapi.request.Requests object at 0x7915d427aed0>, 'album': <tidalapi.album.Album object at 0x7915d4383f50>, 
'id': 152668960, 'name': 'All Of Me', 'duration': 163, 'available': True, 'tidal_release_date': datetime.datetime(2020, 8, 28, 0, 0, tzinfo=tzutc()), 'user_date_added': None, 'track_num': 2,
'volume_num': 1, 'explicit': False, 'popularity': 14, 'artist': <tidalapi.artist.Artist object at 0x7915d45da910>, 'artists': [<tidalapi.artist.Artist object at 0x7915d45d9110>, 
<tidalapi.artist.Artist object at 0x7915d45d8fd0>], 'type': None, 'artist_roles': None, 'replay_gain': -10.59, 'peak': 0.999937, 'isrc': 'USUM72014229', 'copyright': '℗ 2020 Republic 
Records, a division of UMG Recordings, Inc.', 'audio_quality': <Quality.hi_res: 'HI_RES'>, 'version': None, 'media_metadata_tags': ['LOSSLESS', 'MQA'], 'full_name': 'All Of Me'}
{'session': <tidalapi.session.Session object at 0x7915d427b110>, 'requests': <tidalapi.request.Requests object at 0x7915d427aed0>, 'artist': <tidalapi.artist.Artist object at 
0x7915d45d9110>, 'id': 152668956, 'cover': '38201f9b-fb1e-45df-b4fa-85464bf4df6e', 'video_cover': None, 'duration': None, 'available': None, 'num_tracks': None, 'num_videos': None, 
'num_volumes': None, 'copyright': None, 'version': None, 'explicit': None, 'universal_product_number': None, 'popularity': None, 'type': None, 'artists': [<tidalapi.artist.Artist object at 
0x7915d45d9110>, <tidalapi.artist.Artist object at 0x7915d45d8fd0>], 'release_date': None, 'tidal_release_date': None, 'user_date_added': None}
╭─────────────────────────────────── Download Progress ───────────────────────────────────╮
│                                                                                         │
│                                                                                         │
│  Item 'The Score, Travis Barker - All'   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%  │
│                                                                                         │
│                                                                                         │
╰─────────────────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/cli.py:180 in download      │
│                                                                                                  │
│   177 │   │   │   if media_type in [MediaType.TRACK, MediaType.VIDEO]:                           │
│   178 │   │   │   │   download_delay: bool = bool(settings.data.download_delay and urls.index(   │
│   179 │   │   │   │                                                                              │
│ ❱ 180 │   │   │   │   dl.item(                                                                   │
│   181 │   │   │   │   │   media_id=item_id, media_type=media_type, file_template=file_template   │
│   182 │   │   │   │   )                                                                          │
│   183 │   │   │   elif media_type in [MediaType.ALBUM, MediaType.PLAYLIST, MediaType.MIX]:       │
│                                                                                                  │
│ ╭─────────────────────────────────────── locals ───────────────────────────────────────╮         │
│ │            ctx = <click.core.Context object at 0x7915d5047550>                       │         │
│ │             dl = <tidal_dl_ng.download.Download object at 0x7915d45d8ed0>            │         │
│ │ download_delay = False                                                               │         │
│ │  file_template = 'Tracks/{artist_name} - {track_title}'                              │         │
│ │      file_urls = None                                                                │         │
│ │      fn_logger = <tidal_dl_ng.helper.wrapper.LoggerWrapped object at 0x7915d47af150> │         │
│ │           item = 'https://tidal.com/browse/track/152668960'                          │         │
│ │        item_id = '152668960'                                                         │         │
│ │     media_type = <MediaType.TRACK: 'track'>                                          │         │
│ │       progress = <rich.progress.Progress object at 0x7915d4299ed0>                   │         │
│ │ progress_table = <rich.table.Table object at 0x7915d45d9590>                         │         │
│ │       settings = <tidal_dl_ng.config.Settings object at 0x7915d427a0d0>              │         │
│ │           urls = ['https://tidal.com/browse/track/152668960']                        │         │
│ │  urls_pos_last = 0                                                                   │         │
│ ╰──────────────────────────────────────────────────────────────────────────────────────╯         │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:233 in item     │
│                                                                                                  │
│   230 │   │   │   with tempfile.TemporaryDirectory(ignore_cleanup_errors=True) as tmp_path_dir   │
│   231 │   │   │   │   tmp_path_file = os.path.join(tmp_path_dir, str(uuid4()) + stream_manifes   │
│   232 │   │   │   │   # Download media.                                                          │
│ ❱ 233 │   │   │   │   tmp_path_file = self._download(media=media, stream_manifest=stream_manif   │
│   234 │   │   │   │                                                                              │
│   235 │   │   │   │   if isinstance(media, Video) and self.settings.data.video_convert_mp4:      │
│   236 │   │   │   │   │   # Convert `*.ts` file to `*.mp4` using ffmpeg                          │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │     download_delay = False                                                                   │ │
│ │      download_skip = False                                                                   │ │
│ │ file_name_relative = 'Tracks/The Score, Travis Barker - All Of Me'                           │ │
│ │      file_template = 'Tracks/{artist_name} - {track_title}'                                  │ │
│ │           manifest = 'PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48TVBEIHhtbG5zPSJ1c… │ │
│ │              media = <tidalapi.media.Track object at 0x7915d4298410>                         │ │
│ │           media_id = '152668960'                                                             │ │
│ │         media_type = <MediaType.TRACK: 'track'>                                              │ │
│ │          mime_type = 'application/dash+xml'                                                  │ │
│ │          path_file = '/home/olivia/Downloads/Tracks/The Score, Travis Barker - All Of        │ │
│ │                      Me.m4a'                                                                 │ │
│ │               self = <tidal_dl_ng.download.Download object at 0x7915d45d8ed0>                │ │
│ │             stream = <tidalapi.media.Stream object at 0x7915d427b950>                        │ │
│ │    stream_manifest = StreamManifest(                                                         │ │
│ │                      │   codecs='mp4a.40.2',                                                 │ │
│ │                      │   mime_type='audio/mp4',                                              │ │
│ │                      │   urls=[                                                              │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGVjYzQw… │ │
│ │                      │   │   ... +32                                                         │ │
│ │                      │   ],                                                                  │ │
│ │                      │   file_extension='.m4a',                                              │ │
│ │                      │   encryption_type='NONE',                                             │ │
│ │                      │   encryption_key=None                                                 │ │
│ │                      )                                                                       │ │
│ │       tmp_path_dir = '/tmp/tmp21psalph'                                                      │ │
│ │      tmp_path_file = '/tmp/tmp21psalph/974f3563-a4fd-4060-b6db-3526ed39c197.m4a'             │ │
│ │     video_download = True                                                                    │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:153 in          │
│ _download                                                                                        │
│                                                                                                  │
│   150 │   │                                                                                      │
│   151 │   │   # Write metadata to file.                                                          │
│   152 │   │   if not isinstance(media, Video):                                                   │
│ ❱ 153 │   │   │   self.metadata_write(media, tmp_path_file_decrypted)                            │
│   154 │   │                                                                                      │
│   155 │   │   return tmp_path_file_decrypted                                                     │
│   156                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │              block_size = None                                                               │ │
│ │                    data = b'\x00\x00\x05\x94moof\x00\x00\x00\x10mfhd\x00\x00\x00\x00\x00\x0… │ │
│ │                       f = <_io.BufferedWriter                                                │ │
│ │                           name='/tmp/tmp21psalph/974f3563-a4fd-4060-b6db-3526ed39c197.m4a'>  │ │
│ │                   media = <tidalapi.media.Track object at 0x7915d4298410>                    │ │
│ │              media_name = 'The Score, Travis Barker - All Of Me'                             │ │
│ │        needs_decryption = False                                                              │ │
│ │                  p_task = 0                                                                  │ │
│ │               path_file = '/tmp/tmp21psalph/974f3563-a4fd-4060-b6db-3526ed39c197.m4a'        │ │
│ │         progress_stdout = True                                                               │ │
│ │          progress_total = 42                                                                 │ │
│ │                       r = <Response [200]>                                                   │ │
│ │                    self = <tidal_dl_ng.download.Download object at 0x7915d45d8ed0>           │ │
│ │         stream_manifest = StreamManifest(                                                    │ │
│ │                           │   codecs='mp4a.40.2',                                            │ │
│ │                           │   mime_type='audio/mp4',                                         │ │
│ │                           │   urls=[                                                         │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │                           │   │   ... +32                                                    │ │
│ │                           │   ],                                                             │ │
│ │                           │   file_extension='.m4a',                                         │ │
│ │                           │   encryption_type='NONE',                                        │ │
│ │                           │   encryption_key=None                                            │ │
│ │                           )                                                                  │ │
│ │ tmp_path_file_decrypted = '/tmp/tmp21psalph/974f3563-a4fd-4060-b6db-3526ed39c197.m4a'        │ │
│ │                     url = 'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzk1M2FhMmVkNGV… │ │
│ │              urls_count = 42                                                                 │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:330 in          │
│ metadata_write                                                                                   │
│                                                                                                  │
│   327 │   │   │   ),                                                                             │
│   328 │   │   )                                                                                  │
│   329 │   │                                                                                      │
│ ❱ 330 │   │   m.save()                                                                           │
│   331 │   │                                                                                      │
│   332 │   │   result = True                                                                      │
│   333                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────── locals ───────────────────────────────────╮                 │
│ │   copy_right = '℗ 2020 Republic Records, a division of UMG Recordings, Inc.' │                 │
│ │         isrc = 'USUM72014229'                                                │                 │
│ │       lyrics = ''                                                            │                 │
│ │            m = <tidal_dl_ng.metadata.Metadata object at 0x7915d42984d0>      │                 │
│ │    path_file = '/tmp/tmp21psalph/974f3563-a4fd-4060-b6db-3526ed39c197.m4a'   │                 │
│ │ release_date = ''                                                            │                 │
│ │       result = False                                                         │                 │
│ │         self = <tidal_dl_ng.download.Download object at 0x7915d45d8ed0>      │                 │
│ │        track = <tidalapi.media.Track object at 0x7915d4298410>               │                 │
│ ╰──────────────────────────────────────────────────────────────────────────────╯                 │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/metadata.py:97 in save      │
│                                                                                                  │
│    94 │   │   elif isinstance(self.m, mutagen.mp3.MP3):                                          │
│    95 │   │   │   self.set_mp3()                                                                 │
│    96 │   │   elif isinstance(self.m, mutagen.mp4.MP4):                                          │
│ ❱  97 │   │   │   self.set_mp4()                                                                 │
│    98 │   │                                                                                      │
│    99 │   │   self._cover()                                                                      │
│   100 │   │   self.m.save()                                                                      │
│                                                                                                  │
│ ╭──────────────────────────── locals ─────────────────────────────╮                              │
│ │ self = <tidal_dl_ng.metadata.Metadata object at 0x7915d42984d0> │                              │
│ ╰─────────────────────────────────────────────────────────────────╯                              │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/metadata.py:134 in set_mp4  │
│                                                                                                  │
│   131 │                                                                                          │
│   132 │   def set_mp4(self):                                                                     │
│   133 │   │   self.m.tags["\xa9nam"] = self.title                                                │
│ ❱ 134 │   │   self.m.tags["\xa9alb"] = self.album                                                │
│   135 │   │   self.m.tags["aART"] = self.albumartist                                             │
│   136 │   │   self.m.tags["\xa9ART"] = ", ".join(self.artists) if self.artists else ""           │
│   137 │   │   self.m.tags["cprt"] = self.copy_right                                              │
│                                                                                                  │
│ ╭──────────────────────────── locals ─────────────────────────────╮                              │
│ │ self = <tidal_dl_ng.metadata.Metadata object at 0x7915d42984d0> │                              │
│ ╰─────────────────────────────────────────────────────────────────╯                              │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:372 in          │
│ __setitem__                                                                                      │
│                                                                                                  │
│    369 │   def __setitem__(self, key, value):                                                    │
│    370 │   │   if not isinstance(key, str):                                                      │
│    371 │   │   │   raise TypeError("key has to be str")                                          │
│ ❱  372 │   │   self._render(key, value)                                                          │
│    373 │   │   super(MP4Tags, self).__setitem__(key, value)                                      │
│    374 │                                                                                         │
│    375 │   @classmethod                                                                          │
│                                                                                                  │
│ ╭─────────── locals ────────────╮                                                                │
│ │   key = '©alb'                │                                                                │
│ │  self = {'©nam': 'All Of Me'} │                                                                │
│ │ value = None                  │                                                                │
│ ╰───────────────────────────────╯                                                                │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:388 in _render  │
│                                                                                                  │
│    385 │   │   │   render_func = type(self).__render_text                                        │
│    386 │   │   │   render_args = []                                                              │
│    387 │   │                                                                                     │
│ ❱  388 │   │   return render_func(self, key, value, *render_args)                                │
│    389 │                                                                                         │
│    390 │   @convert_error(IOError, error)                                                        │
│    391 │   @loadfile(writable=True)                                                              │
│                                                                                                  │
│ ╭───────────────────────────── locals ─────────────────────────────╮                             │
│ │   atom_name = b'\xa9alb'                                         │                             │
│ │         key = '©alb'                                             │                             │
│ │ render_args = ()                                                 │                             │
│ │ render_func = <function MP4Tags.__render_text at 0x7915d42711c0> │                             │
│ │        self = {'©nam': 'All Of Me'}                              │                             │
│ │       value = None                                               │                             │
│ ╰──────────────────────────────────────────────────────────────────╯                             │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:822 in          │
│ __render_text                                                                                    │
│                                                                                                  │
│    819 │   │   │   value = [value]                                                               │
│    820 │   │                                                                                     │
│    821 │   │   encoded = []                                                                      │
│ ❱  822 │   │   for v in value:                                                                   │
│    823 │   │   │   if not isinstance(v, str):                                                    │
│    824 │   │   │   │   raise TypeError("%r not str" % v)                                         │
│    825                                                                                           │
│                                                                                                  │
│ ╭───────────── locals ─────────────╮                                                             │
│ │ encoded = []                     │                                                             │
│ │   flags = <AtomDataType.UTF8: 1> │                                                             │
│ │     key = '©alb'                 │                                                             │
│ │    self = {'©nam': 'All Of Me'}  │                                                             │
│ │   value = None                   │                                                             │
│ ╰──────────────────────────────────╯                                                             │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: 'NoneType' object is not iterable
exislow commented 8 months ago

Great, thank you. In your case the variable track.album.name (album name) is missing / non existing. But this cannot be. Every album has a name. Super wild phenomenon...

I basically know how to fix this for you but before I do (which is actually nonsense), can you tell:

  1. What TIDAL plan do you have?
  2. Does this error happens only with this track with other tracks from a) the same album and b) from different albums / artists?
Dialgatrainer02 commented 8 months ago

i have a tidal hifi plus plan

same album different song:

tidal-dl-ng dl https://tidal.com/browse/track/152668957
Let us check, if you are already logged in... Yep, looks good! You are logged in.
{'session': <tidalapi.session.Session object at 0x7eb0c72cabd0>, 'requests': <tidalapi.request.Requests object at 0x7eb0c6f91a10>, 'album': <tidalapi.album.Album object at 0x7eb0c72d8190>, 
'id': 152668957, 'name': 'Can You Hear Me Now', 'duration': 194, 'available': True, 'tidal_release_date': datetime.datetime(2020, 8, 28, 0, 0, tzinfo=tzutc()), 'user_date_added': None, 
'track_num': 1, 'volume_num': 1, 'explicit': False, 'popularity': 15, 'artist': <tidalapi.artist.Artist object at 0x7eb0c72cb310>, 'artists': [<tidalapi.artist.Artist object at 
0x7eb0c6fac790>], 'type': None, 'artist_roles': None, 'replay_gain': -10.59, 'peak': 0.999906, 'isrc': 'USUM72014838', 'copyright': '℗ 2020 Republic Records, a division of UMG Recordings, 
Inc.', 'audio_quality': <Quality.hi_res: 'HI_RES'>, 'version': None, 'media_metadata_tags': ['LOSSLESS', 'MQA'], 'full_name': 'Can You Hear Me Now'}
{'session': <tidalapi.session.Session object at 0x7eb0c72cabd0>, 'requests': <tidalapi.request.Requests object at 0x7eb0c6f91a10>, 'artist': <tidalapi.artist.Artist object at 
0x7eb0c6fac790>, 'id': 152668956, 'cover': '38201f9b-fb1e-45df-b4fa-85464bf4df6e', 'video_cover': None, 'duration': None, 'available': None, 'num_tracks': None, 'num_videos': None, 
'num_volumes': None, 'copyright': None, 'version': None, 'explicit': None, 'universal_product_number': None, 'popularity': None, 'type': None, 'artists': [<tidalapi.artist.Artist object at 
0x7eb0c6fac790>], 'release_date': None, 'tidal_release_date': None, 'user_date_added': None}
╭─────────────────────────────────── Download Progress ───────────────────────────────────╮
│                                                                                         │
│                                                                                         │
│  Item 'The Score - Can You Hear Me No'   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%  │
│                                                                                         │
│                                                                                         │
╰─────────────────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/cli.py:180 in download      │
│                                                                                                  │
│   177 │   │   │   if media_type in [MediaType.TRACK, MediaType.VIDEO]:                           │
│   178 │   │   │   │   download_delay: bool = bool(settings.data.download_delay and urls.index(   │
│   179 │   │   │   │                                                                              │
│ ❱ 180 │   │   │   │   dl.item(                                                                   │
│   181 │   │   │   │   │   media_id=item_id, media_type=media_type, file_template=file_template   │
│   182 │   │   │   │   )                                                                          │
│   183 │   │   │   elif media_type in [MediaType.ALBUM, MediaType.PLAYLIST, MediaType.MIX]:       │
│                                                                                                  │
│ ╭─────────────────────────────────────── locals ───────────────────────────────────────╮         │
│ │            ctx = <click.core.Context object at 0x7eb0c730acd0>                       │         │
│ │             dl = <tidal_dl_ng.download.Download object at 0x7eb0c72d8f10>            │         │
│ │ download_delay = False                                                               │         │
│ │  file_template = 'Tracks/{artist_name} - {track_title}'                              │         │
│ │      file_urls = None                                                                │         │
│ │      fn_logger = <tidal_dl_ng.helper.wrapper.LoggerWrapped object at 0x7eb0c72c8ed0> │         │
│ │           item = 'https://tidal.com/browse/track/152668957'                          │         │
│ │        item_id = '152668957'                                                         │         │
│ │     media_type = <MediaType.TRACK: 'track'>                                          │         │
│ │       progress = <rich.progress.Progress object at 0x7eb0c760a090>                   │         │
│ │ progress_table = <rich.table.Table object at 0x7eb0c72d8690>                         │         │
│ │       settings = <tidal_dl_ng.config.Settings object at 0x7eb0c6f92110>              │         │
│ │           urls = ['https://tidal.com/browse/track/152668957']                        │         │
│ │  urls_pos_last = 0                                                                   │         │
│ ╰──────────────────────────────────────────────────────────────────────────────────────╯         │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:233 in item     │
│                                                                                                  │
│   230 │   │   │   with tempfile.TemporaryDirectory(ignore_cleanup_errors=True) as tmp_path_dir   │
│   231 │   │   │   │   tmp_path_file = os.path.join(tmp_path_dir, str(uuid4()) + stream_manifes   │
│   232 │   │   │   │   # Download media.                                                          │
│ ❱ 233 │   │   │   │   tmp_path_file = self._download(media=media, stream_manifest=stream_manif   │
│   234 │   │   │   │                                                                              │
│   235 │   │   │   │   if isinstance(media, Video) and self.settings.data.video_convert_mp4:      │
│   236 │   │   │   │   │   # Convert `*.ts` file to `*.mp4` using ffmpeg                          │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │     download_delay = False                                                                   │ │
│ │      download_skip = False                                                                   │ │
│ │ file_name_relative = 'Tracks/The Score - Can You Hear Me Now'                                │ │
│ │      file_template = 'Tracks/{artist_name} - {track_title}'                                  │ │
│ │           manifest = 'PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48TVBEIHhtbG5zPSJ1c… │ │
│ │              media = <tidalapi.media.Track object at 0x7eb0c72d8410>                         │ │
│ │           media_id = '152668957'                                                             │ │
│ │         media_type = <MediaType.TRACK: 'track'>                                              │ │
│ │          mime_type = 'application/dash+xml'                                                  │ │
│ │          path_file = '/home/olivia/Downloads/Tracks/The Score - Can You Hear Me Now.m4a'     │ │
│ │               self = <tidal_dl_ng.download.Download object at 0x7eb0c72d8f10>                │ │
│ │             stream = <tidalapi.media.Stream object at 0x7eb0c7760bd0>                        │ │
│ │    stream_manifest = StreamManifest(                                                         │ │
│ │                      │   codecs='mp4a.40.2',                                                 │ │
│ │                      │   mime_type='audio/mp4',                                              │ │
│ │                      │   urls=[                                                              │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA3ZDdh… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA3ZDdh… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA3ZDdh… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA3ZDdh… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA3ZDdh… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA3ZDdh… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA3ZDdh… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA3ZDdh… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA3ZDdh… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA3ZDdh… │ │
│ │                      │   │   ... +40                                                         │ │
│ │                      │   ],                                                                  │ │
│ │                      │   file_extension='.m4a',                                              │ │
│ │                      │   encryption_type='NONE',                                             │ │
│ │                      │   encryption_key=None                                                 │ │
│ │                      )                                                                       │ │
│ │       tmp_path_dir = '/tmp/tmpclrjj4l2'                                                      │ │
│ │      tmp_path_file = '/tmp/tmpclrjj4l2/89b5aa8a-1e14-4a77-958b-f10962d88bd0.m4a'             │ │
│ │     video_download = True                                                                    │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:153 in          │
│ _download                                                                                        │
│                                                                                                  │
│   150 │   │                                                                                      │
│   151 │   │   # Write metadata to file.                                                          │
│   152 │   │   if not isinstance(media, Video):                                                   │
│ ❱ 153 │   │   │   self.metadata_write(media, tmp_path_file_decrypted)                            │
│   154 │   │                                                                                      │
│   155 │   │   return tmp_path_file_decrypted                                                     │
│   156                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │              block_size = None                                                               │ │
│ │                    data = b'\x00\x00\x03\xfcmoof\x00\x00\x00\x10mfhd\x00\x00\x00\x00\x00\x0… │ │
│ │                       f = <_io.BufferedWriter                                                │ │
│ │                           name='/tmp/tmpclrjj4l2/89b5aa8a-1e14-4a77-958b-f10962d88bd0.m4a'>  │ │
│ │                   media = <tidalapi.media.Track object at 0x7eb0c72d8410>                    │ │
│ │              media_name = 'The Score - Can You Hear Me Now'                                  │ │
│ │        needs_decryption = False                                                              │ │
│ │                  p_task = 0                                                                  │ │
│ │               path_file = '/tmp/tmpclrjj4l2/89b5aa8a-1e14-4a77-958b-f10962d88bd0.m4a'        │ │
│ │         progress_stdout = True                                                               │ │
│ │          progress_total = 50                                                                 │ │
│ │                       r = <Response [200]>                                                   │ │
│ │                    self = <tidal_dl_ng.download.Download object at 0x7eb0c72d8f10>           │ │
│ │         stream_manifest = StreamManifest(                                                    │ │
│ │                           │   codecs='mp4a.40.2',                                            │ │
│ │                           │   mime_type='audio/mp4',                                         │ │
│ │                           │   urls=[                                                         │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │                           │   │   ... +40                                                    │ │
│ │                           │   ],                                                             │ │
│ │                           │   file_extension='.m4a',                                         │ │
│ │                           │   encryption_type='NONE',                                        │ │
│ │                           │   encryption_key=None                                            │ │
│ │                           )                                                                  │ │
│ │ tmp_path_file_decrypted = '/tmp/tmpclrjj4l2/89b5aa8a-1e14-4a77-958b-f10962d88bd0.m4a'        │ │
│ │                     url = 'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzE5MjZmMzkzMTA… │ │
│ │              urls_count = 50                                                                 │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:330 in          │
│ metadata_write                                                                                   │
│                                                                                                  │
│   327 │   │   │   ),                                                                             │
│   328 │   │   )                                                                                  │
│   329 │   │                                                                                      │
│ ❱ 330 │   │   m.save()                                                                           │
│   331 │   │                                                                                      │
│   332 │   │   result = True                                                                      │
│   333                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────── locals ───────────────────────────────────╮                 │
│ │   copy_right = '℗ 2020 Republic Records, a division of UMG Recordings, Inc.' │                 │
│ │         isrc = 'USUM72014838'                                                │                 │
│ │       lyrics = ''                                                            │                 │
│ │            m = <tidal_dl_ng.metadata.Metadata object at 0x7eb0c72cb790>      │                 │
│ │    path_file = '/tmp/tmpclrjj4l2/89b5aa8a-1e14-4a77-958b-f10962d88bd0.m4a'   │                 │
│ │ release_date = ''                                                            │                 │
│ │       result = False                                                         │                 │
│ │         self = <tidal_dl_ng.download.Download object at 0x7eb0c72d8f10>      │                 │
│ │        track = <tidalapi.media.Track object at 0x7eb0c72d8410>               │                 │
│ ╰──────────────────────────────────────────────────────────────────────────────╯                 │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/metadata.py:97 in save      │
│                                                                                                  │
│    94 │   │   elif isinstance(self.m, mutagen.mp3.MP3):                                          │
│    95 │   │   │   self.set_mp3()                                                                 │
│    96 │   │   elif isinstance(self.m, mutagen.mp4.MP4):                                          │
│ ❱  97 │   │   │   self.set_mp4()                                                                 │
│    98 │   │                                                                                      │
│    99 │   │   self._cover()                                                                      │
│   100 │   │   self.m.save()                                                                      │
│                                                                                                  │
│ ╭──────────────────────────── locals ─────────────────────────────╮                              │
│ │ self = <tidal_dl_ng.metadata.Metadata object at 0x7eb0c72cb790> │                              │
│ ╰─────────────────────────────────────────────────────────────────╯                              │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/metadata.py:134 in set_mp4  │
│                                                                                                  │
│   131 │                                                                                          │
│   132 │   def set_mp4(self):                                                                     │
│   133 │   │   self.m.tags["\xa9nam"] = self.title                                                │
│ ❱ 134 │   │   self.m.tags["\xa9alb"] = self.album                                                │
│   135 │   │   self.m.tags["aART"] = self.albumartist                                             │
│   136 │   │   self.m.tags["\xa9ART"] = ", ".join(self.artists) if self.artists else ""           │
│   137 │   │   self.m.tags["cprt"] = self.copy_right                                              │
│                                                                                                  │
│ ╭──────────────────────────── locals ─────────────────────────────╮                              │
│ │ self = <tidal_dl_ng.metadata.Metadata object at 0x7eb0c72cb790> │                              │
│ ╰─────────────────────────────────────────────────────────────────╯                              │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:372 in          │
│ __setitem__                                                                                      │
│                                                                                                  │
│    369 │   def __setitem__(self, key, value):                                                    │
│    370 │   │   if not isinstance(key, str):                                                      │
│    371 │   │   │   raise TypeError("key has to be str")                                          │
│ ❱  372 │   │   self._render(key, value)                                                          │
│    373 │   │   super(MP4Tags, self).__setitem__(key, value)                                      │
│    374 │                                                                                         │
│    375 │   @classmethod                                                                          │
│                                                                                                  │
│ ╭──────────────── locals ─────────────────╮                                                      │
│ │   key = '©alb'                          │                                                      │
│ │  self = {'©nam': 'Can You Hear Me Now'} │                                                      │
│ │ value = None                            │                                                      │
│ ╰─────────────────────────────────────────╯                                                      │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:388 in _render  │
│                                                                                                  │
│    385 │   │   │   render_func = type(self).__render_text                                        │
│    386 │   │   │   render_args = []                                                              │
│    387 │   │                                                                                     │
│ ❱  388 │   │   return render_func(self, key, value, *render_args)                                │
│    389 │                                                                                         │
│    390 │   @convert_error(IOError, error)                                                        │
│    391 │   @loadfile(writable=True)                                                              │
│                                                                                                  │
│ ╭───────────────────────────── locals ─────────────────────────────╮                             │
│ │   atom_name = b'\xa9alb'                                         │                             │
│ │         key = '©alb'                                             │                             │
│ │ render_args = ()                                                 │                             │
│ │ render_func = <function MP4Tags.__render_text at 0x7eb0c6f891c0> │                             │
│ │        self = {'©nam': 'Can You Hear Me Now'}                    │                             │
│ │       value = None                                               │                             │
│ ╰──────────────────────────────────────────────────────────────────╯                             │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:822 in          │
│ __render_text                                                                                    │
│                                                                                                  │
│    819 │   │   │   value = [value]                                                               │
│    820 │   │                                                                                     │
│    821 │   │   encoded = []                                                                      │
│ ❱  822 │   │   for v in value:                                                                   │
│    823 │   │   │   if not isinstance(v, str):                                                    │
│    824 │   │   │   │   raise TypeError("%r not str" % v)                                         │
│    825                                                                                           │
│                                                                                                  │
│ ╭───────────────── locals ──────────────────╮                                                    │
│ │ encoded = []                              │                                                    │
│ │   flags = <AtomDataType.UTF8: 1>          │                                                    │
│ │     key = '©alb'                          │                                                    │
│ │    self = {'©nam': 'Can You Hear Me Now'} │                                                    │
│ │   value = None                            │                                                    │
│ ╰───────────────────────────────────────────╯                                                    │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: 'NoneType' object is not iterable

different album and artist:

tidal-dl-ng dl https://tidal.com/browse/track/175693674
Let us check, if you are already logged in... Yep, looks good! You are logged in.
{'session': <tidalapi.session.Session object at 0x75db33fcf710>, 'requests': <tidalapi.request.Requests object at 0x75db33cb12d0>, 'album': <tidalapi.album.Album object at 0x75db33fcebd0>, 
'id': 175693674, 'name': 'Welcome Home, Son (Remastered)', 'duration': 287, 'available': True, 'tidal_release_date': datetime.datetime(2021, 2, 28, 0, 0, tzinfo=tzutc()), 'user_date_added': 
None, 'track_num': 2, 'volume_num': 1, 'explicit': False, 'popularity': 7, 'artist': <tidalapi.artist.Artist object at 0x75db341b2ed0>, 'artists': [<tidalapi.artist.Artist object at 
0x75db33fdeb50>], 'type': None, 'artist_roles': None, 'replay_gain': -9.14, 'peak': 0.977081, 'isrc': 'TCAFK2199916', 'copyright': '2019 Bear Machine', 'audio_quality': 
<Quality.high_lossless: 'LOSSLESS'>, 'version': None, 'media_metadata_tags': ['LOSSLESS'], 'full_name': 'Welcome Home, Son (Remastered)'}
{'session': <tidalapi.session.Session object at 0x75db33fcf710>, 'requests': <tidalapi.request.Requests object at 0x75db33cb12d0>, 'artist': <tidalapi.artist.Artist object at 
0x75db33fdeb50>, 'id': 175693670, 'cover': '3381bd47-5cd3-4881-86c4-12b63b9fa6e7', 'video_cover': None, 'duration': None, 'available': None, 'num_tracks': None, 'num_videos': None, 
'num_volumes': None, 'copyright': None, 'version': None, 'explicit': None, 'universal_product_number': None, 'popularity': None, 'type': None, 'artists': [<tidalapi.artist.Artist object at 
0x75db33fdeb50>], 'release_date': None, 'tidal_release_date': None, 'user_date_added': None}
╭─────────────────────────────────── Download Progress ───────────────────────────────────╮
│                                                                                         │
│                                                                                         │
│  Item 'Radical Face - Welcome Home, S'   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%  │
│                                                                                         │
│                                                                                         │
╰─────────────────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/cli.py:180 in download      │
│                                                                                                  │
│   177 │   │   │   if media_type in [MediaType.TRACK, MediaType.VIDEO]:                           │
│   178 │   │   │   │   download_delay: bool = bool(settings.data.download_delay and urls.index(   │
│   179 │   │   │   │                                                                              │
│ ❱ 180 │   │   │   │   dl.item(                                                                   │
│   181 │   │   │   │   │   media_id=item_id, media_type=media_type, file_template=file_template   │
│   182 │   │   │   │   )                                                                          │
│   183 │   │   │   elif media_type in [MediaType.ALBUM, MediaType.PLAYLIST, MediaType.MIX]:       │
│                                                                                                  │
│ ╭─────────────────────────────────────── locals ───────────────────────────────────────╮         │
│ │            ctx = <click.core.Context object at 0x75db34ddee10>                       │         │
│ │             dl = <tidal_dl_ng.download.Download object at 0x75db33cb2750>            │         │
│ │ download_delay = False                                                               │         │
│ │  file_template = 'Tracks/{artist_name} - {track_title}'                              │         │
│ │      file_urls = None                                                                │         │
│ │      fn_logger = <tidal_dl_ng.helper.wrapper.LoggerWrapped object at 0x75db33cb2290> │         │
│ │           item = 'https://tidal.com/browse/track/175693674'                          │         │
│ │        item_id = '175693674'                                                         │         │
│ │     media_type = <MediaType.TRACK: 'track'>                                          │         │
│ │       progress = <rich.progress.Progress object at 0x75db349d89d0>                   │         │
│ │ progress_table = <rich.table.Table object at 0x75db33fcc0d0>                         │         │
│ │       settings = <tidal_dl_ng.config.Settings object at 0x75db341b3490>              │         │
│ │           urls = ['https://tidal.com/browse/track/175693674']                        │         │
│ │  urls_pos_last = 0                                                                   │         │
│ ╰──────────────────────────────────────────────────────────────────────────────────────╯         │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:233 in item     │
│                                                                                                  │
│   230 │   │   │   with tempfile.TemporaryDirectory(ignore_cleanup_errors=True) as tmp_path_dir   │
│   231 │   │   │   │   tmp_path_file = os.path.join(tmp_path_dir, str(uuid4()) + stream_manifes   │
│   232 │   │   │   │   # Download media.                                                          │
│ ❱ 233 │   │   │   │   tmp_path_file = self._download(media=media, stream_manifest=stream_manif   │
│   234 │   │   │   │                                                                              │
│   235 │   │   │   │   if isinstance(media, Video) and self.settings.data.video_convert_mp4:      │
│   236 │   │   │   │   │   # Convert `*.ts` file to `*.mp4` using ffmpeg                          │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │     download_delay = False                                                                   │ │
│ │      download_skip = False                                                                   │ │
│ │ file_name_relative = 'Tracks/Radical Face - Welcome Home, Son (Remastered)'                  │ │
│ │      file_template = 'Tracks/{artist_name} - {track_title}'                                  │ │
│ │           manifest = 'PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48TVBEIHhtbG5zPSJ1c… │ │
│ │              media = <tidalapi.media.Track object at 0x75db33fdc950>                         │ │
│ │           media_id = '175693674'                                                             │ │
│ │         media_type = <MediaType.TRACK: 'track'>                                              │ │
│ │          mime_type = 'application/dash+xml'                                                  │ │
│ │          path_file = '/home/olivia/Downloads/Tracks/Radical Face - Welcome Home, Son         │ │
│ │                      (Remastered).m4a'                                                       │ │
│ │               self = <tidal_dl_ng.download.Download object at 0x75db33cb2750>                │ │
│ │             stream = <tidalapi.media.Stream object at 0x75db33cb0b10>                        │ │
│ │    stream_manifest = StreamManifest(                                                         │ │
│ │                      │   codecs='mp4a.40.2',                                                 │ │
│ │                      │   mime_type='audio/mp4',                                              │ │
│ │                      │   urls=[                                                              │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGIxOTJj… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGIxOTJj… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGIxOTJj… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGIxOTJj… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGIxOTJj… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGIxOTJj… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGIxOTJj… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGIxOTJj… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGIxOTJj… │ │
│ │                      │   │                                                                   │ │
│ │                      'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGIxOTJj… │ │
│ │                      │   │   ... +63                                                         │ │
│ │                      │   ],                                                                  │ │
│ │                      │   file_extension='.m4a',                                              │ │
│ │                      │   encryption_type='NONE',                                             │ │
│ │                      │   encryption_key=None                                                 │ │
│ │                      )                                                                       │ │
│ │       tmp_path_dir = '/tmp/tmpdrrt8ai6'                                                      │ │
│ │      tmp_path_file = '/tmp/tmpdrrt8ai6/0add22a8-1cf1-4128-a79f-d360d5f3cb0d.m4a'             │ │
│ │     video_download = True                                                                    │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:153 in          │
│ _download                                                                                        │
│                                                                                                  │
│   150 │   │                                                                                      │
│   151 │   │   # Write metadata to file.                                                          │
│   152 │   │   if not isinstance(media, Video):                                                   │
│ ❱ 153 │   │   │   self.metadata_write(media, tmp_path_file_decrypted)                            │
│   154 │   │                                                                                      │
│   155 │   │   return tmp_path_file_decrypted                                                     │
│   156                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │              block_size = None                                                               │ │
│ │                    data = b'\x00\x00\x04\x8cmoof\x00\x00\x00\x10mfhd\x00\x00\x00\x00\x00\x0… │ │
│ │                       f = <_io.BufferedWriter                                                │ │
│ │                           name='/tmp/tmpdrrt8ai6/0add22a8-1cf1-4128-a79f-d360d5f3cb0d.m4a'>  │ │
│ │                   media = <tidalapi.media.Track object at 0x75db33fdc950>                    │ │
│ │              media_name = 'Radical Face - Welcome Home, Son (Remastered)'                    │ │
│ │        needs_decryption = False                                                              │ │
│ │                  p_task = 0                                                                  │ │
│ │               path_file = '/tmp/tmpdrrt8ai6/0add22a8-1cf1-4128-a79f-d360d5f3cb0d.m4a'        │ │
│ │         progress_stdout = True                                                               │ │
│ │          progress_total = 73                                                                 │ │
│ │                       r = <Response [200]>                                                   │ │
│ │                    self = <tidal_dl_ng.download.Download object at 0x75db33cb2750>           │ │
│ │         stream_manifest = StreamManifest(                                                    │ │
│ │                           │   codecs='mp4a.40.2',                                            │ │
│ │                           │   mime_type='audio/mp4',                                         │ │
│ │                           │   urls=[                                                         │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │                           │   │                                                              │ │
│ │                           'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │                           │   │   ... +63                                                    │ │
│ │                           │   ],                                                             │ │
│ │                           │   file_extension='.m4a',                                         │ │
│ │                           │   encryption_type='NONE',                                        │ │
│ │                           │   encryption_key=None                                            │ │
│ │                           )                                                                  │ │
│ │ tmp_path_file_decrypted = '/tmp/tmpdrrt8ai6/0add22a8-1cf1-4128-a79f-d360d5f3cb0d.m4a'        │ │
│ │                     url = 'https://sp-ad-fa.audio.tidal.com/mediatracks/GikSJzEyMGQ3ZmZjZGI… │ │
│ │              urls_count = 73                                                                 │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:330 in          │
│ metadata_write                                                                                   │
│                                                                                                  │
│   327 │   │   │   ),                                                                             │
│   328 │   │   )                                                                                  │
│   329 │   │                                                                                      │
│ ❱ 330 │   │   m.save()                                                                           │
│   331 │   │                                                                                      │
│   332 │   │   result = True                                                                      │
│   333                                                                                            │
│                                                                                                  │
│ ╭────────────────────────────────── locals ──────────────────────────────────╮                   │
│ │   copy_right = '2019 Bear Machine'                                         │                   │
│ │         isrc = 'TCAFK2199916'                                              │                   │
│ │       lyrics = ''                                                          │                   │
│ │            m = <tidal_dl_ng.metadata.Metadata object at 0x75db35650b50>    │                   │
│ │    path_file = '/tmp/tmpdrrt8ai6/0add22a8-1cf1-4128-a79f-d360d5f3cb0d.m4a' │                   │
│ │ release_date = ''                                                          │                   │
│ │       result = False                                                       │                   │
│ │         self = <tidal_dl_ng.download.Download object at 0x75db33cb2750>    │                   │
│ │        track = <tidalapi.media.Track object at 0x75db33fdc950>             │                   │
│ ╰────────────────────────────────────────────────────────────────────────────╯                   │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/metadata.py:97 in save      │
│                                                                                                  │
│    94 │   │   elif isinstance(self.m, mutagen.mp3.MP3):                                          │
│    95 │   │   │   self.set_mp3()                                                                 │
│    96 │   │   elif isinstance(self.m, mutagen.mp4.MP4):                                          │
│ ❱  97 │   │   │   self.set_mp4()                                                                 │
│    98 │   │                                                                                      │
│    99 │   │   self._cover()                                                                      │
│   100 │   │   self.m.save()                                                                      │
│                                                                                                  │
│ ╭──────────────────────────── locals ─────────────────────────────╮                              │
│ │ self = <tidal_dl_ng.metadata.Metadata object at 0x75db35650b50> │                              │
│ ╰─────────────────────────────────────────────────────────────────╯                              │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/metadata.py:134 in set_mp4  │
│                                                                                                  │
│   131 │                                                                                          │
│   132 │   def set_mp4(self):                                                                     │
│   133 │   │   self.m.tags["\xa9nam"] = self.title                                                │
│ ❱ 134 │   │   self.m.tags["\xa9alb"] = self.album                                                │
│   135 │   │   self.m.tags["aART"] = self.albumartist                                             │
│   136 │   │   self.m.tags["\xa9ART"] = ", ".join(self.artists) if self.artists else ""           │
│   137 │   │   self.m.tags["cprt"] = self.copy_right                                              │
│                                                                                                  │
│ ╭──────────────────────────── locals ─────────────────────────────╮                              │
│ │ self = <tidal_dl_ng.metadata.Metadata object at 0x75db35650b50> │                              │
│ ╰─────────────────────────────────────────────────────────────────╯                              │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:372 in          │
│ __setitem__                                                                                      │
│                                                                                                  │
│    369 │   def __setitem__(self, key, value):                                                    │
│    370 │   │   if not isinstance(key, str):                                                      │
│    371 │   │   │   raise TypeError("key has to be str")                                          │
│ ❱  372 │   │   self._render(key, value)                                                          │
│    373 │   │   super(MP4Tags, self).__setitem__(key, value)                                      │
│    374 │                                                                                         │
│    375 │   @classmethod                                                                          │
│                                                                                                  │
│ ╭────────────────────── locals ──────────────────────╮                                           │
│ │   key = '©alb'                                     │                                           │
│ │  self = {'©nam': 'Welcome Home, Son (Remastered)'} │                                           │
│ │ value = None                                       │                                           │
│ ╰────────────────────────────────────────────────────╯                                           │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:388 in _render  │
│                                                                                                  │
│    385 │   │   │   render_func = type(self).__render_text                                        │
│    386 │   │   │   render_args = []                                                              │
│    387 │   │                                                                                     │
│ ❱  388 │   │   return render_func(self, key, value, *render_args)                                │
│    389 │                                                                                         │
│    390 │   @convert_error(IOError, error)                                                        │
│    391 │   @loadfile(writable=True)                                                              │
│                                                                                                  │
│ ╭───────────────────────────── locals ─────────────────────────────╮                             │
│ │   atom_name = b'\xa9alb'                                         │                             │
│ │         key = '©alb'                                             │                             │
│ │ render_args = ()                                                 │                             │
│ │ render_func = <function MP4Tags.__render_text at 0x75db33c8d1c0> │                             │
│ │        self = {'©nam': 'Welcome Home, Son (Remastered)'}         │                             │
│ │       value = None                                               │                             │
│ ╰──────────────────────────────────────────────────────────────────╯                             │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/mutagen/mp4/__init__.py:822 in          │
│ __render_text                                                                                    │
│                                                                                                  │
│    819 │   │   │   value = [value]                                                               │
│    820 │   │                                                                                     │
│    821 │   │   encoded = []                                                                      │
│ ❱  822 │   │   for v in value:                                                                   │
│    823 │   │   │   if not isinstance(v, str):                                                    │
│    824 │   │   │   │   raise TypeError("%r not str" % v)                                         │
│    825                                                                                           │
│                                                                                                  │
│ ╭─────────────────────── locals ───────────────────────╮                                         │
│ │ encoded = []                                         │                                         │
│ │   flags = <AtomDataType.UTF8: 1>                     │                                         │
│ │     key = '©alb'                                     │                                         │
│ │    self = {'©nam': 'Welcome Home, Son (Remastered)'} │                                         │
│ │   value = None                                       │                                         │
│ ╰──────────────────────────────────────────────────────╯                                         │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: 'NoneType' object is not iterable
exislow commented 8 months ago

To confirm, that my fix works I need some more information regarding album downloads. Can you please do the following?

  1. Add this line vars(media) here: https://github.com/exislow/tidal-dl-ng/blob/2e75bf4fdcad7fe475768819d8894339e5d1052c/tidal_dl_ng/download.py#L348
            raise MediaMissing

        print(vars(media))
        # Create file name and path
        file_name_relative = format_path_media(file_template, media)
  1. Start to download an album instead of a track, for instance:
tidal-dl-ng dl https://tidal.com/browse/album/135465075

You do not need to finish the download. As soon as print(vars(media)) has printed it's output you can abort the script (CTRL + C).

  1. Paste the whole console output here.
Dialgatrainer02 commented 8 months ago

Thank you I can do this tomorrow when I'm home

exislow commented 8 months ago

Okay, thanks.

Dialgatrainer02 commented 8 months ago
tidal-dl-ng dl https://tidal.com/browse/album/135465075
Let us check, if you are already logged in... Yep, looks good! You are logged in.
{'session': <tidalapi.session.Session object at 0x7b5619e30690>, 'requests': <tidalapi.request.Requests object at 0x7b5618b023d0>, 'artist': <tidalapi.artist.Artist object at 
0x7b5618e105d0>, 'id': 135465075, 'cover': 'd0ab8252-6247-405b-9742-251bb3bed01a', 'video_cover': None, 'duration': 4755, 'available': True, 'num_tracks': 14, 'num_videos': 0, 'num_volumes':
1, 'copyright': '(P) 1999 Sony Music Entertainment', 'version': None, 'explicit': False, 'universal_product_number': '886448349747', 'popularity': 21, 'type': 'ALBUM', 'artists': 
[<tidalapi.artist.Artist object at 0x7b5618b01190>], 'release_date': datetime.datetime(1999, 11, 16, 0, 0), 'tidal_release_date': datetime.datetime(2020, 4, 3, 0, 0, tzinfo=tzutc()), 
'user_date_added': None}
╭──────────────────────────────────────────────────────────────────────────────────── Download Progress ─────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                                                                                                                            │
│                                                                                                                                                                                            │
│                                                                                                                                                                                            │
│                                                                                                                                                                                            │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/cli.py:184 in download      │
│                                                                                                  │
│   181 │   │   │   │   │   media_id=item_id, media_type=media_type, file_template=file_template   │
│   182 │   │   │   │   )                                                                          │
│   183 │   │   │   elif media_type in [MediaType.ALBUM, MediaType.PLAYLIST, MediaType.MIX]:       │
│ ❱ 184 │   │   │   │   dl.items(                                                                  │
│   185 │   │   │   │   │   media_id=item_id,                                                      │
│   186 │   │   │   │   │   media_type=media_type,                                                 │
│   187 │   │   │   │   │   file_template=file_template,                                           │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │            ctx = <click.core.Context object at 0x7b5618fe7a50>                               │ │
│ │             dl = <tidal_dl_ng.download.Download object at 0x7b5618dfccd0>                    │ │
│ │  file_template = 'Albums/{artist_name} - {album_title}/{track_num}. {artist_name} -          │ │
│ │                  {track_title}'                                                              │ │
│ │      file_urls = None                                                                        │ │
│ │      fn_logger = <tidal_dl_ng.helper.wrapper.LoggerWrapped object at 0x7b5618dfe390>         │ │
│ │           item = 'https://tidal.com/browse/album/135465075'                                  │ │
│ │        item_id = '135465075'                                                                 │ │
│ │     media_type = <MediaType.ALBUM: 'album'>                                                  │ │
│ │       progress = <rich.progress.Progress object at 0x7b5619109e90>                           │ │
│ │ progress_table = <rich.table.Table object at 0x7b561a193fd0>                                 │ │
│ │       settings = <tidal_dl_ng.config.Settings object at 0x7b5618aef050>                      │ │
│ │           urls = ['https://tidal.com/browse/album/135465075']                                │ │
│ │  urls_pos_last = 0                                                                           │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /home/olivia/tidal-dl/.venv/lib/python3.11/site-packages/tidal_dl_ng/download.py:357 in items    │
│                                                                                                  │
│   354 │   │   if isinstance(media, Mix):                                                         │
│   355 │   │   │   list_media_name = media.title[:30]                                             │
│   356 │   │   elif video_download:                                                               │
│ ❱ 357 │   │   │   list_media_name = media.name[:30]                                              │
│   358 │   │   else:                                                                              │
│   359 │   │   │   videos_include = False                                                         │
│   360 │   │   │   list_media_name = media.name[:30]                                              │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │     download_delay = True                                                                    │ │
│ │ file_name_relative = 'Albums/Toto - {album_title}/{track_num}. Toto - {track_title}'         │ │
│ │      file_template = 'Albums/{artist_name} - {album_title}/{track_num}. {artist_name} -      │ │
│ │                      {track_title}'                                                          │ │
│ │              media = <tidalapi.album.Album object at 0x7b5618dfd110>                         │ │
│ │           media_id = '135465075'                                                             │ │
│ │         media_type = <MediaType.ALBUM: 'album'>                                              │ │
│ │               self = <tidal_dl_ng.download.Download object at 0x7b5618dfccd0>                │ │
│ │     video_download = True                                                                    │ │
│ │     videos_include = True                                                                    │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: 'NoneType' object is not subscriptable

i entered the command to download an album with the print vars media line and i got this sorry it took so long to do i also ran pip install --upgrade tidal-dl-ng just to make sure i was on latest version

exislow commented 8 months ago

Great work. This phenomenon is actually not possible to be honest. If you open the official TIDAL app it must show you the album name but the data you receive from the same API my app uses is missing the album.name at all.

Every work around I like to implement would be suuuuper hacky. To avoid this I have started to consult the maintainer from python-tidal (the TIDAL API library this app is relying on): https://github.com/tamland/python-tidal/issues/234

Let's see, what their opinion on this is.