Closed Xayayia closed 8 months ago
I do not really understand what your issue is. Please be more precise. Provide settings, logs etc.
log:
$ tdn dl https://tidal.com/album/344769289
Let us check, if you are already logged in... Yep, looks good! You are logged in.
Download skipped, since file exists:
'/data/data/com.termux/files/home/download/Albums/Kanye
West - VULTURES 1/01. Kanye West - STARS.m4a'
Download skipped, since file exists:
'/data/data/com.termux/files/home/download/Albums/Kanye
West - VULTURES 1/02. Kanye West - KEYS TO MY LIFE.m4a'
╭─────────────────── Download Progress ───────────────────╮
│ │
│ │
│ List 'VULTURES 1' ⠏ ━╺━━━━━━ 12% │
│ Item 'Kanye West, Ty Dolla $ign - PA' ━━━━━━━━ 100% │
│ │
│ │
╰─────────────────────────────────────────────────────────╯
╭─────────── Traceback (most recent call last) ───────────╮
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/tidal_dl_ng/cli.py:184 in download │
│ │
│ 181 │ │ │ │ │ media_id=item_id, media_type= │
│ 182 │ │ │ │ ) │
│ 183 │ │ │ elif media_type in [MediaType.ALBUM, │
│ ❱ 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 │ │
│ │ 0x71aa29f8d0> │ │
│ │ dl = <tidal_dl_ng.download.Download │ │
│ │ object at 0x71a9c4fe50> │ │
│ │ file_template = 'Albums/{artist_name} - │ │
│ │ {album_title}/{track_num}. │ │
│ │ {artist_name} - {track_title}' │ │
│ │ file_urls = None │ │
│ │ fn_logger = <tidal_dl_ng.helper.wrapper.Logge… │ │
│ │ object at 0x71a9c4f310> │ │
│ │ item = 'https://tidal.com/album/34476928… │ │
│ │ item_id = '344769289' │ │
│ │ media_type = <MediaType.ALBUM: 'album'> │ │
│ │ progress = <rich.progress.Progress object at │ │
│ │ 0x71aa368b50> │ │
│ │ progress_table = <rich.table.Table object at │ │
│ │ 0x71a9c4d810> │ │
│ │ settings = <tidal_dl_ng.config.Settings │ │
│ │ object at 0x71a9c31590> │ │
│ │ urls = [ │ │
│ │ │ │ │
│ │ 'https://tidal.com/album/34476928… │ │
│ │ ] │ │
│ │ urls_pos_last = 0 │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/tidal_dl_ng/download.py:381 in items │
│ │
│ 378 │ │ while not self.progress.finished: │
│ 379 │ │ │ for media in items: │
│ 380 │ │ │ │ # Download the item. │
│ ❱ 381 │ │ │ │ status_download, result_path_file │
│ 382 │ │ │ │ │ media=media, │
│ 383 │ │ │ │ │ file_template=file_name_relat │
│ 384 │ │ │ │ ) │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ download_delay = True │ │
│ │ file_name_relative = 'Albums/Kanye West - VULTURES │ │
│ │ 1/{track_num}. Kanye West - │ │
│ │ {track_title}' │ │
│ │ file_template = 'Albums/{artist_name} - │ │
│ │ {album_title}/{track_num}. │ │
│ │ {artist_name} - {track_title}' │ │
│ │ items = [ │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x71aa541550>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x71b160c450>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x71a9c4ee10>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x71aa369d90>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x71a9c5f650>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x71a9c5fad0>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x71a9c72650>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x71a9c72b90>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x71a9c72e90>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x71a9c5ca10>, │ │
│ │ │ ... +6 │ │
│ │ ] │ │
│ │ list_media_name = 'VULTURES 1' │ │
│ │ media = <tidalapi.media.Track object │ │
│ │ at 0x71a9c4ee10> │ │
│ │ media_id = '344769289' │ │
│ │ media_type = <MediaType.ALBUM: 'album'> │ │
│ │ p_task1 = 0 │ │
│ │ progress_stdout = True │ │
│ │ result_path_file = '/data/data/com.termux/files/… │ │
│ │ West - VULTURES 1/02. Kan'+29 │ │
│ │ self = <tidal_dl_ng.download.Download │ │
│ │ object at 0x71a9c4fe50> │ │
│ │ status_download = False │ │
│ │ video_download = True │ │
│ │ videos_include = True │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/tidal_dl_ng/download.py:233 in item │
│ │
│ 230 │ │ │ with tempfile.TemporaryDirectory(igno │
│ 231 │ │ │ │ tmp_path_file = os.path.join(tmp_ │
│ 232 │ │ │ │ # Download media. │
│ ❱ 233 │ │ │ │ tmp_path_file = self._download(me │
│ 234 │ │ │ │ │
│ 235 │ │ │ │ if isinstance(media, Video) and s │
│ 236 │ │ │ │ │ # Convert `*.ts` file to `*.m │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ download_delay = False │ │
│ │ download_skip = False │ │
│ │ extension_ignore = False │ │
│ │ file_name_relative = 'Albums/Kanye West - VULTURES │ │
│ │ 1/03. Kanye West - PAID' │ │
│ │ file_template = 'Albums/Kanye West - VULTURES │ │
│ │ 1/{track_num}. Kanye West - │ │
│ │ {track_title}' │ │
│ │ manifest = 'PD94bWwgdmVyc2lvbj0nMS4wJyBl… │ │
│ │ media = <tidalapi.media.Track object │ │
│ │ at 0x71a9c4ee10> │ │
│ │ media_id = None │ │
│ │ media_type = None │ │
│ │ mime_type = 'application/dash+xml' │ │
│ │ path_file = '/data/data/com.termux/files/… │ │
│ │ West - VULTURES 1/03. Kan'+18 │ │
│ │ self = <tidal_dl_ng.download.Download │ │
│ │ object at 0x71a9c4fe50> │ │
│ │ stream = <tidalapi.media.Stream object │ │
│ │ at 0x71aa542b50> │ │
│ │ stream_manifest = StreamManifest( │ │
│ │ │ codecs='flac', │ │
│ │ │ mime_type='audio/mp4', │ │
│ │ │ urls=[ │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ ... +41 │ │
│ │ │ ], │ │
│ │ │ file_extension='.m4a', │ │
│ │ │ encryption_type='NONE', │ │
│ │ │ encryption_key=None │ │
│ │ ) │ │
│ │ tmp_path_dir = '/data/data/com.termux/files/… │ │
│ │ tmp_path_file = '/data/data/com.termux/files/… │ │
│ │ video_download = True │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/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_f │
│ 154 │ │ │
│ 155 │ │ return tmp_path_file_decrypted │
│ 156 │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ block_size = None │ │
│ │ data = b'\x00\x00\x01hmoof\x00\… │ │
│ │ f = <_io.BufferedWriter │ │
│ │ name='/data/data/com.ter… │ │
│ │ media = <tidalapi.media.Track │ │
│ │ object at 0x71a9c4ee10> │ │
│ │ media_name = 'Kanye West, Ty Dolla │ │
│ │ $ign - PAID' │ │
│ │ needs_decryption = False │ │
│ │ p_task = 1 │ │
│ │ path_file = '/data/data/com.termux/f… │ │
│ │ progress_stdout = True │ │
│ │ progress_total = 51 │ │
│ │ r = <Response [200]> │ │
│ │ self = <tidal_dl_ng.download.Do… │ │
│ │ object at 0x71a9c4fe50> │ │
│ │ stream_manifest = StreamManifest( │ │
│ │ │ codecs='flac', │ │
│ │ │ │ │
│ │ mime_type='audio/mp4', │ │
│ │ │ urls=[ │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ ... +41 │ │
│ │ │ ], │ │
│ │ │ │ │
│ │ file_extension='.m4a', │ │
│ │ │ │ │
│ │ encryption_type='NONE', │ │
│ │ │ encryption_key=None │ │
│ │ ) │ │
│ │ tmp_path_file_decrypted = '/data/data/com.termux/f… │ │
│ │ url = 'https://sp-ad-fa.audio.… │ │
│ │ urls_count = 51 │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/tidal_dl_ng/download.py:327 in metadata_write │
│ │
│ 324 │ │ │ ), │
│ 325 │ │ ) │
│ 326 │ │ │
│ ❱ 327 │ │ m.save() │
│ 328 │ │ │
│ 329 │ │ result = True │
│ 330 │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ copy_right = 'YZY' │ │
│ │ isrc = 'QZ7XS2400003' │ │
│ │ lyrics = None │ │
│ │ m = <tidal_dl_ng.metadata.Metadata │ │
│ │ object at 0x71a9c4d110> │ │
│ │ path_file = '/data/data/com.termux/files/usr/tm… │ │
│ │ release_date = '' │ │
│ │ result = False │ │
│ │ self = <tidal_dl_ng.download.Download │ │
│ │ object at 0x71a9c4fe50> │ │
│ │ track = <tidalapi.media.Track object at │ │
│ │ 0x71a9c4ee10> │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/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 │ │
│ │ 0x71a9c4d110> │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/tidal_dl_ng/metadata.py:143 in set_mp4 │
│ │
│ 140 │ │ # self.m.tags['\xa9gen'] = self.genre │
│ 141 │ │ self.m.tags["\xa9day"] = self.date │
│ 142 │ │ self.m.tags["\xa9wrt"] = ", ".join(self.c │
│ ❱ 143 │ │ self.m.tags["\xa9lyr"] = self.lyrics │
│ 144 │ │
│ 145 │ def cover_data(self, url: str = None, path_fi │
│ 146 │ │ result: str | bytes = "" │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ self = <tidal_dl_ng.metadata.Metadata object at │ │
│ │ 0x71a9c4d110> │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/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, va │
│ 374 │ │
│ 375 │ @classmethod │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ key = '©lyr' │ │
│ │ self = {'©nam': 'PAID', '©alb': 'VULTURES 1', │ │
│ │ 'aART': 'Kanye West, Ty Dolla $ign - PAID', │ │
│ │ '©ART': 'Kanye West, Ty Dolla $ign', │ │
│ │ 'cprt': 'YZY', 'trkn': [[3, 1]], 'disk': │ │
│ │ [[1, 1]], '©day': '', '©wrt': ''} │ │
│ │ value = None │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/mutagen/mp4/__init__.py:388 in _render │
│ │
│ 385 │ │ │ render_func = type(self).__render_te │
│ 386 │ │ │ render_args = [] │
│ 387 │ │ │
│ ❱ 388 │ │ return render_func(self, key, value, *re │
│ 389 │ │
│ 390 │ @convert_error(IOError, error) │
│ 391 │ @loadfile(writable=True) │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ atom_name = b'\xa9lyr' │ │
│ │ key = '©lyr' │ │
│ │ render_args = () │ │
│ │ render_func = <function MP4Tags.__render_text at │ │
│ │ 0x71a9c254e0> │ │
│ │ self = {'©nam': 'PAID', '©alb': 'VULTURES │ │
│ │ 1', 'aART': 'Kanye West, Ty Dolla │ │
│ │ $ign - PAID', '©ART': 'Kanye West, Ty │ │
│ │ Dolla $ign', 'cprt': 'YZY', 'trkn': │ │
│ │ [[3, 1]], 'disk': [[1, 1]], '©day': │ │
│ │ '', '©wrt': ''} │ │
│ │ value = None │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/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 = '©lyr' │ │
│ │ self = {'©nam': 'PAID', '©alb': 'VULTURES 1', │ │
│ │ 'aART': 'Kanye West, Ty Dolla $ign - │ │
│ │ PAID', '©ART': 'Kanye West, Ty Dolla │ │
│ │ $ign', 'cprt': 'YZY', 'trkn': [[3, 1]], │ │
│ │ 'disk': [[1, 1]], '©day': '', '©wrt': ''} │ │
│ │ value = None │ │
│ ╰─────────────────────────────────────────────────────╯ │
╰─────────────────────────────────────────────────────────╯
TypeError: 'NoneType' object is not iterable
my cfg:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Key ┃ Value ┃ Description ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ download_base_path │ ./download │ Where to │
│ │ │ store the │
│ │ │ downloaded │
│ │ │ media. │
│ download_delay │ True │ Activate │
│ │ │ randomized │
│ │ │ download │
│ │ │ delay to │
│ │ │ mimic human │
│ │ │ behaviour. │
│ format_album │ Albums/{arti… │ Where to │
│ │ - │ download │
│ │ {album_title… │ albums and │
│ │ {artist_name} │ how to name │
│ │ - │ the items. │
│ │ {track_title} │ │
│ format_mix │ Mix/{mix_nam… │ Where to │
│ │ - │ download │
│ │ {track_title} │ mixes and │
│ │ │ how to name │
│ │ │ the items. │
│ format_playlist │ Playlists/{p… │ Where to │
│ │ - │ download │
│ │ {track_title} │ playlists │
│ │ │ and how to │
│ │ │ name the │
│ │ │ items. │
│ format_track │ Tracks/{arti… │ Where to │
│ │ - │ download │
│ │ {track_title} │ tracks and │
│ │ │ how to name │
│ │ │ the items. │
│ format_video │ Videos/{arti… │ Where to │
│ │ - │ download │
│ │ {track_title} │ videos and │
│ │ │ how to name │
│ │ │ the items. │
│ lyrics_embed │ False │ Embed lyrics │
│ │ │ in audio │
│ │ │ file. │
│ lyrics_file │ True │ Save lyrics │
│ │ │ to separate │
│ │ │ *.lrc file. │
│ metadata_cover_dimension │ CoverDimensi… │ The │
│ │ │ dimensions │
│ │ │ of the cover │
│ │ │ image │
│ │ │ embedded │
│ │ │ into the │
│ │ │ track. │
│ │ │ Possible │
│ │ │ values: │
│ │ │ 320x320, │
│ │ │ 640x640x │
│ │ │ 1280x1280. │
│ quality_audio │ Quality.hi_r… │ Desired │
│ │ │ audio │
│ │ │ download │
│ │ │ quality: │
│ │ │ "LOW" │
│ │ │ (96kbps), │
│ │ │ "HIGH" │
│ │ │ (320kbps), │
│ │ │ "LOSSLESS" │
│ │ │ (16 Bit, │
│ │ │ 44,1 kHz), │
│ │ │ "HI_RES" │
│ │ │ (MQA 24 Bit, │
│ │ │ 96 kHz), │
│ │ │ "HI_RES_LOS… │
│ │ │ (up to 24 │
│ │ │ Bit, 192 │
│ │ │ kHz) │
│ quality_video │ QualityVideo… │ Desired │
│ │ │ video │
│ │ │ download │
│ │ │ quality: │
│ │ │ "360", │
│ │ │ "480", │
│ │ │ "720", │
│ │ │ "1080" │
│ skip_existing │ SkipExisting… │ Do not │
│ │ │ download, if │
│ │ │ file already │
│ │ │ exists. │
│ │ │ Possible │
│ │ │ option false │
│ │ │ = do not │
│ │ │ skip, │
│ │ │ 'exact' = if │
│ │ │ filename │
│ │ │ already │
│ │ │ exists, │
│ │ │ 'extension_… │
│ │ │ = skip even │
│ │ │ if a file │
│ │ │ with a │
│ │ │ different │
│ │ │ file │
│ │ │ extension │
│ │ │ exists. │
│ video_convert_mp4 │ True │ Videos are │
│ │ │ downloaded │
│ │ │ as MPEG │
│ │ │ Transport │
│ │ │ Stream (TS) │
│ │ │ files. With │
│ │ │ this option │
│ │ │ each video │
│ │ │ will be │
│ │ │ converted to │
│ │ │ MP4. FFMPEG │
│ │ │ must be │
│ │ │ installed │
│ │ │ and added to │
│ │ │ your 'PATH' │
│ │ │ variable. │
│ video_download │ True │ Allow │
│ │ │ download of │
│ │ │ videos. │
Great, thank you! Looks like a duplicate of #38
I will release the bug fix soon.
Please test it: https://github.com/exislow/tidal-dl-ng/releases/tag/v0.8.2
Successfully uninstalled tidal-dl-ng-0.8.1 Successfully installed tidal-dl-ng-0.8.2
~ $ tdn dl https://tidal.com/album/344769289
Let us check, if you are already logged in... Yep, looks good! You are logged in.
Download skipped, since file exists:
'/data/data/com.termux/files/home/download/Albums/Kanye
West - VULTURES 1/01. Kanye West - STARS.m4a'
Download skipped, since file exists:
'/data/data/com.termux/files/home/download/Albums/Kanye
West - VULTURES 1/02. Kanye West - KEYS TO MY LIFE.m4a'
╭─────────────────── Download Progress ───────────────────╮
│ │
│ │
│ List 'VULTURES 1' ⠸ ━╺━━━━━━ 12% │
│ Item 'Kanye West, Ty Dolla $ign - PA' ━━━━━━━━ 100% │
│ │
│ │
╰─────────────────────────────────────────────────────────╯
╭─────────── Traceback (most recent call last) ───────────╮
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/tidal_dl_ng/cli.py:184 in download │
│ │
│ 181 │ │ │ │ │ media_id=item_id, media_type= │
│ 182 │ │ │ │ ) │
│ 183 │ │ │ elif media_type in [MediaType.ALBUM, │
│ ❱ 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 │ │
│ │ 0x7b57d61150> │ │
│ │ dl = <tidal_dl_ng.download.Download │ │
│ │ object at 0x7b5747a390> │ │
│ │ file_template = 'Albums/{artist_name} - │ │
│ │ {album_title}/{track_num}. │ │
│ │ {artist_name} - {track_title}' │ │
│ │ file_urls = None │ │
│ │ fn_logger = <tidal_dl_ng.helper.wrapper.Logge… │ │
│ │ object at 0x7b5747b710> │ │
│ │ item = 'https://tidal.com/album/34476928… │ │
│ │ item_id = '344769289' │ │
│ │ media_type = <MediaType.ALBUM: 'album'> │ │
│ │ progress = <rich.progress.Progress object at │ │
│ │ 0x7b57d74050> │ │
│ │ progress_table = <rich.table.Table object at │ │
│ │ 0x7b57bc53d0> │ │
│ │ settings = <tidal_dl_ng.config.Settings │ │
│ │ object at 0x7b57478c50> │ │
│ │ urls = [ │ │
│ │ │ │ │
│ │ 'https://tidal.com/album/34476928… │ │
│ │ ] │ │
│ │ urls_pos_last = 0 │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/tidal_dl_ng/download.py:382 in items │
│ │
│ 379 │ │ while not self.progress.finished: │
│ 380 │ │ │ for media in items: │
│ 381 │ │ │ │ # Download the item. │
│ ❱ 382 │ │ │ │ status_download, result_path_file │
│ 383 │ │ │ │ │ media=media, │
│ 384 │ │ │ │ │ file_template=file_name_relat │
│ 385 │ │ │ │ ) │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ download_delay = True │ │
│ │ file_name_relative = 'Albums/Kanye West - VULTURES │ │
│ │ 1/{track_num}. Kanye West - │ │
│ │ {track_title}' │ │
│ │ file_template = 'Albums/{artist_name} - │ │
│ │ {album_title}/{track_num}. │ │
│ │ {artist_name} - {track_title}' │ │
│ │ items = [ │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x7b57d855d0>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x7b57d85990>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x7b57d85ad0>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x7b57bc5c50>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x7b5747a590>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x7b5749c790>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x7b574b25d0>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x7b574b2910>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x7b574b2a90>, │ │
│ │ │ <tidalapi.media.Track │ │
│ │ object at 0x7b5749d790>, │ │
│ │ │ ... +6 │ │
│ │ ] │ │
│ │ list_media_name = 'VULTURES 1' │ │
│ │ media = <tidalapi.media.Track object │ │
│ │ at 0x7b57d85ad0> │ │
│ │ media_id = '344769289' │ │
│ │ media_type = <MediaType.ALBUM: 'album'> │ │
│ │ p_task1 = 0 │ │
│ │ progress_stdout = True │ │
│ │ result_path_file = '/data/data/com.termux/files/… │ │
│ │ West - VULTURES 1/02. Kan'+29 │ │
│ │ self = <tidal_dl_ng.download.Download │ │
│ │ object at 0x7b5747a390> │ │
│ │ status_download = False │ │
│ │ video_download = True │ │
│ │ videos_include = True │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/tidal_dl_ng/download.py:233 in item │
│ │
│ 230 │ │ │ with tempfile.TemporaryDirectory(igno │
│ 231 │ │ │ │ tmp_path_file = os.path.join(tmp_ │
│ 232 │ │ │ │ # Download media. │
│ ❱ 233 │ │ │ │ tmp_path_file = self._download(me │
│ 234 │ │ │ │ │
│ 235 │ │ │ │ if isinstance(media, Video) and s │
│ 236 │ │ │ │ │ # Convert `*.ts` file to `*.m │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ download_delay = False │ │
│ │ download_skip = False │ │
│ │ extension_ignore = False │ │
│ │ file_name_relative = 'Albums/Kanye West - VULTURES │ │
│ │ 1/03. Kanye West - PAID' │ │
│ │ file_template = 'Albums/Kanye West - VULTURES │ │
│ │ 1/{track_num}. Kanye West - │ │
│ │ {track_title}' │ │
│ │ manifest = 'PD94bWwgdmVyc2lvbj0nMS4wJyBl… │ │
│ │ media = <tidalapi.media.Track object │ │
│ │ at 0x7b57d85ad0> │ │
│ │ media_id = None │ │
│ │ media_type = None │ │
│ │ mime_type = 'application/dash+xml' │ │
│ │ path_file = '/data/data/com.termux/files/… │ │
│ │ West - VULTURES 1/03. Kan'+18 │ │
│ │ self = <tidal_dl_ng.download.Download │ │
│ │ object at 0x7b5747a390> │ │
│ │ stream = <tidalapi.media.Stream object │ │
│ │ at 0x7b574791d0> │ │
│ │ stream_manifest = StreamManifest( │ │
│ │ │ codecs='flac', │ │
│ │ │ mime_type='audio/mp4', │ │
│ │ │ urls=[ │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.tidal… │ │
│ │ │ │ ... +41 │ │
│ │ │ ], │ │
│ │ │ file_extension='.m4a', │ │
│ │ │ encryption_type='NONE', │ │
│ │ │ encryption_key=None │ │
│ │ ) │ │
│ │ tmp_path_dir = '/data/data/com.termux/files/… │ │
│ │ tmp_path_file = '/data/data/com.termux/files/… │ │
│ │ video_download = True │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/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_f │
│ 154 │ │ │
│ 155 │ │ return tmp_path_file_decrypted │
│ 156 │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ block_size = None │ │
│ │ data = b'\x00\x00\x01hmoof\x00\… │ │
│ │ f = <_io.BufferedWriter │ │
│ │ name='/data/data/com.ter… │ │
│ │ media = <tidalapi.media.Track │ │
│ │ object at 0x7b57d85ad0> │ │
│ │ media_name = 'Kanye West, Ty Dolla │ │
│ │ $ign - PAID' │ │
│ │ needs_decryption = False │ │
│ │ p_task = 1 │ │
│ │ path_file = '/data/data/com.termux/f… │ │
│ │ progress_stdout = True │ │
│ │ progress_total = 51 │ │
│ │ r = <Response [200]> │ │
│ │ self = <tidal_dl_ng.download.Do… │ │
│ │ object at 0x7b5747a390> │ │
│ │ stream_manifest = StreamManifest( │ │
│ │ │ codecs='flac', │ │
│ │ │ │ │
│ │ mime_type='audio/mp4', │ │
│ │ │ urls=[ │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ │ │
│ │ 'https://sp-ad-fa.audio.… │ │
│ │ │ │ ... +41 │ │
│ │ │ ], │ │
│ │ │ │ │
│ │ file_extension='.m4a', │ │
│ │ │ │ │
│ │ encryption_type='NONE', │ │
│ │ │ encryption_key=None │ │
│ │ ) │ │
│ │ tmp_path_file_decrypted = '/data/data/com.termux/f… │ │
│ │ url = 'https://sp-ad-fa.audio.… │ │
│ │ urls_count = 51 │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/tidal_dl_ng/download.py:328 in metadata_write │
│ │
│ 325 │ │ │ ), │
│ 326 │ │ ) │
│ 327 │ │ │
│ ❱ 328 │ │ m.save() │
│ 329 │ │ │
│ 330 │ │ result = True │
│ 331 │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ copy_right = 'YZY' │ │
│ │ isrc = 'QZ7XS2400003' │ │
│ │ lyrics = None │ │
│ │ m = <tidal_dl_ng.metadata.Metadata │ │
│ │ object at 0x7b57c7d790> │ │
│ │ path_file = '/data/data/com.termux/files/usr/tm… │ │
│ │ release_date = '' │ │
│ │ result = False │ │
│ │ self = <tidal_dl_ng.download.Download │ │
│ │ object at 0x7b5747a390> │ │
│ │ track = <tidalapi.media.Track object at │ │
│ │ 0x7b57d85ad0> │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/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 │ │
│ │ 0x7b57c7d790> │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/tidal_dl_ng/metadata.py:143 in set_mp4 │
│ │
│ 140 │ │ # self.m.tags['\xa9gen'] = self.genre │
│ 141 │ │ self.m.tags["\xa9day"] = self.date │
│ 142 │ │ self.m.tags["\xa9wrt"] = ", ".join(self.c │
│ ❱ 143 │ │ self.m.tags["\xa9lyr"] = self.lyrics │
│ 144 │ │
│ 145 │ def cover_data(self, url: str = None, path_fi │
│ 146 │ │ result: str | bytes = "" │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ self = <tidal_dl_ng.metadata.Metadata object at │ │
│ │ 0x7b57c7d790> │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/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, va │
│ 374 │ │
│ 375 │ @classmethod │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ key = '©lyr' │ │
│ │ self = {'©nam': 'PAID', '©alb': 'VULTURES 1', │ │
│ │ 'aART': 'Kanye West, Ty Dolla $ign - PAID', │ │
│ │ '©ART': 'Kanye West, Ty Dolla $ign', │ │
│ │ 'cprt': 'YZY', 'trkn': [[3, 1]], 'disk': │ │
│ │ [[1, 1]], '©day': '', '©wrt': ''} │ │
│ │ value = None │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/mutagen/mp4/__init__.py:388 in _render │
│ │
│ 385 │ │ │ render_func = type(self).__render_te │
│ 386 │ │ │ render_args = [] │
│ 387 │ │ │
│ ❱ 388 │ │ return render_func(self, key, value, *re │
│ 389 │ │
│ 390 │ @convert_error(IOError, error) │
│ 391 │ @loadfile(writable=True) │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ atom_name = b'\xa9lyr' │ │
│ │ key = '©lyr' │ │
│ │ render_args = () │ │
│ │ render_func = <function MP4Tags.__render_text at │ │
│ │ 0x7b574654e0> │ │
│ │ self = {'©nam': 'PAID', '©alb': 'VULTURES │ │
│ │ 1', 'aART': 'Kanye West, Ty Dolla │ │
│ │ $ign - PAID', '©ART': 'Kanye West, Ty │ │
│ │ Dolla $ign', 'cprt': 'YZY', 'trkn': │ │
│ │ [[3, 1]], 'disk': [[1, 1]], '©day': │ │
│ │ '', '©wrt': ''} │ │
│ │ value = None │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /data/data/com.termux/files/usr/lib/python3.11/site-pac │
│ kages/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 = '©lyr' │ │
│ │ self = {'©nam': 'PAID', '©alb': 'VULTURES 1', │ │
│ │ 'aART': 'Kanye West, Ty Dolla $ign - │ │
│ │ PAID', '©ART': 'Kanye West, Ty Dolla │ │
│ │ $ign', 'cprt': 'YZY', 'trkn': [[3, 1]], │ │
│ │ 'disk': [[1, 1]], '©day': '', '©wrt': ''} │ │
│ │ value = None │ │
│ ╰─────────────────────────────────────────────────────╯ │
╰─────────────────────────────────────────────────────────╯
TypeError: 'NoneType' object is not iterable
I cannot re-produce it, sorry. Are you sure, you are running the latest version? tidal-dl-ng --version
I can tell you form the line numbers, that you are not running the latest version. Try to get rid of all copies of this app and install only the very latest.
I wiped termux data and installed tdn fresh and it works now. The 2 first lines are from the upgrade command, so I don't know how it could still use 0.8.1. If there's any "wipe something" command maybe it could be useful step of updating
the errors start on 3rd track. highest quality, save lyrics to file turned on