Code Monkey home page Code Monkey logo

Comments (13)

exislow avatar exislow commented on August 17, 2024

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

from tidal-dl-ng.

Dialgatrainer02 avatar Dialgatrainer02 commented on August 17, 2024

settings.json

from tidal-dl-ng.

exislow avatar exislow commented on August 17, 2024

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:

album=track.album.name if track.album else "",

I need the content of track.album.

from tidal-dl-ng.

Dialgatrainer02 avatar Dialgatrainer02 commented on August 17, 2024

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'> │ 

from tidal-dl-ng.

exislow avatar exislow commented on August 17, 2024

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

You did great job. Can you please insert at the following line

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.

from tidal-dl-ng.

Dialgatrainer02 avatar Dialgatrainer02 commented on August 17, 2024

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

from tidal-dl-ng.

exislow avatar exislow commented on August 17, 2024

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?

from tidal-dl-ng.

Dialgatrainer02 avatar Dialgatrainer02 commented on August 17, 2024

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

from tidal-dl-ng.

exislow avatar exislow commented on August 17, 2024

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:
            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.

from tidal-dl-ng.

Dialgatrainer02 avatar Dialgatrainer02 commented on August 17, 2024

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

from tidal-dl-ng.

exislow avatar exislow commented on August 17, 2024

Okay, thanks.

from tidal-dl-ng.

Dialgatrainer02 avatar Dialgatrainer02 commented on August 17, 2024
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

from tidal-dl-ng.

exislow avatar exislow commented on August 17, 2024

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): tamland/python-tidal#234

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

from tidal-dl-ng.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.