exislow / tidal-dl-ng

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

[Bug] ManifestDecodeError (probably tidalapi problem) #98

Closed mrambossek closed 6 months ago

mrambossek commented 6 months ago

What happened?

ManifestDecodeError when trying to download album 101153738 looks like its a tidalapi issue to me, let me know if i should open an issue there instead(?) thanks

Version App

0.13.1

What operating system are you seeing the problem on?

Windows

Relevant log output

PS C:\music> tidal-dl-ng dl https://listen.tidal.com/album/101153738
Let us check, if you are already logged in... Yep, looks good! You are logged in.
Download skipped, since file exists: 'D:\_tempdone\tidal\Albums\Nine Inch Nails - Closer To God(Explicit)\1. Nine Inch Nails - Closer To God.flac'
Download skipped, since file exists: 'D:\_tempdone\tidal\Albums\Nine Inch Nails - Closer To God(Explicit)\2. Nine Inch Nails - Closer (Precursor).flac'
Download skipped, since file exists: 'D:\_tempdone\tidal\Albums\Nine Inch Nails - Closer To God(Explicit)\3. Nine Inch Nails - Closer (Deviation).flac'
Download skipped, since file exists: 'D:\_tempdone\tidal\Albums\Nine Inch Nails - Closer To God(Explicit)\4. Nine Inch Nails - Heresy (Blind).flac'
Download skipped, since file exists: 'D:\_tempdone\tidal\Albums\Nine Inch Nails - Closer To God(Explicit)\5. Nine Inch Nails - Memorabilia.flac'
╭────────────────────────── Download Progress ───────────────────────────╮
│                                                                        │
│                                                                        │
│  List 'Closer To God' ⠹ ━━━━━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━  56%  │
│                                                                        │
│                                                                        │
╰────────────────────────────────────────────────────────────────────────╯
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ C:\Python311\Lib\site-packages\tidalapi\media.py:670 in from_mpd                                 │
│                                                                                                  │
│   667 │   @staticmethod                                                                          │
│   668 │   def from_mpd(mpd_manifest) -> "DashInfo":                                              │
│   669 │   │   try:                                                                               │
│ ❱ 670 │   │   │   return DashInfo(mpd_manifest)                                                  │
│   671 │   │   except:                                                                            │
│   672 │   │   │   raise ManifestDecodeError                                                      │
│   673                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ mpd_manifest = '<?xml version=\'1.0\' encoding=\'UTF-8\'?><MPD                               │ │
│ │                xmlns="urn:mpeg:dash:schema:mpd:2011"'+1482                                   │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ C:\Python311\Lib\site-packages\tidalapi\media.py:719 in __init__                                 │
│                                                                                                  │
│   716 │   │   )                                                                                  │
│   717 │   │   # self.chunkcount = mpd.periods[0].adaptation_sets[0].representations[0].segment   │
│   718 │   │   self.last_chunk_size = (                                                           │
│ ❱ 719 │   │   │   mpd.periods[0]                                                                 │
│   720 │   │   │   .adaptation_sets[0]                                                            │
│   721 │   │   │   .representations[0]                                                            │
│   722 │   │   │   .segment_templates[0]                                                          │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │     mpd = <mpegdash.nodes.MPEGDASH object at 0x00000256ABBD0D50>                             │ │
│ │ mpd_xml = '<?xml version=\'1.0\' encoding=\'UTF-8\'?><MPD                                    │ │
│ │           xmlns="urn:mpeg:dash:schema:mpd:2011"'+1482                                        │ │
│ │    self = <tidalapi.media.DashInfo object at 0x00000256AD1DBBD0>                             │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
IndexError: list index out of range

During handling of the above exception, another exception occurred:

╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ C:\Python311\Lib\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 0x00000256ABB57A50>                           │ │
│ │             dl = <tidal_dl_ng.download.Download object at 0x00000256AD190B10>                │ │
│ │  file_template = 'Albums/{album_artist} - {album_title}{album_explicit}/{album_track_num}.   │ │
│ │                  {artist'+22                                                                 │ │
│ │      file_urls = None                                                                        │ │
│ │      fn_logger = <tidal_dl_ng.helper.wrapper.LoggerWrapped object at 0x00000256AD190AD0>     │ │
│ │           item = 'https://listen.tidal.com/album/101153738'                                  │ │
│ │        item_id = '101153738'                                                                 │ │
│ │     media_type = <MediaType.ALBUM: 'album'>                                                  │ │
│ │       progress = <rich.progress.Progress object at 0x00000256ABBE5710>                       │ │
│ │ progress_table = <rich.table.Table object at 0x00000256AD190B50>                             │ │
│ │       settings = <tidal_dl_ng.config.Settings object at 0x00000256ABBD0650>                  │ │
│ │           urls = ['https://listen.tidal.com/album/101153738']                                │ │
│ │  urls_pos_last = 0                                                                           │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ C:\Python311\Lib\site-packages\tidal_dl_ng\download.py:447 in items                              │
│                                                                                                  │
│   444 │   │   while not self.progress.finished:                                                  │
│   445 │   │   │   for media in items:                                                            │
│   446 │   │   │   │   # Download the item.                                                       │
│ ❱ 447 │   │   │   │   status_download, result_path_file = self.item(                             │
│   448 │   │   │   │   │   media=media,                                                           │
│   449 │   │   │   │   │   file_template=file_name_relative,                                      │
│   450 │   │   │   │   │   quality_audio=quality_audio,                                           │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │     download_delay = True                                                                    │ │
│ │ file_name_relative = 'Albums/Nine Inch Nails - Closer To God(Explicit)/{album_track_num}.    │ │
│ │                      Nine Inch Na'+19                                                        │ │
│ │      file_template = 'Albums/{album_artist} -                                                │ │
│ │                      {album_title}{album_explicit}/{album_track_num}. {artist'+22            │ │
│ │              items = [                                                                       │ │
│ │                      │   <tidalapi.media.Track object at 0x00000256ABBE4150>,                │ │
│ │                      │   <tidalapi.media.Track object at 0x00000256ABBD3450>,                │ │
│ │                      │   <tidalapi.media.Track object at 0x00000256ABBE5250>,                │ │
│ │                      │   <tidalapi.media.Track object at 0x00000256AD191050>,                │ │
│ │                      │   <tidalapi.media.Track object at 0x00000256ABC01490>,                │ │
│ │                      │   <tidalapi.media.Track object at 0x00000256AD19F190>,                │ │
│ │                      │   <tidalapi.media.Track object at 0x00000256AD19E350>,                │ │
│ │                      │   <tidalapi.media.Track object at 0x00000256AD19E250>,                │ │
│ │                      │   <tidalapi.media.Track object at 0x00000256AD1B9990>                 │ │
│ │                      ]                                                                       │ │
│ │    list_media_name = 'Closer To God'                                                         │ │
│ │              media = <tidalapi.media.Track object at 0x00000256AD19F190>                     │ │
│ │           media_id = '101153738'                                                             │ │
│ │         media_type = <MediaType.ALBUM: 'album'>                                              │ │
│ │            p_task1 = 0                                                                       │ │
│ │    progress_stdout = True                                                                    │ │
│ │      quality_audio = None                                                                    │ │
│ │      quality_video = None                                                                    │ │
│ │   result_path_file = 'D:\\_tempdone\\tidal\\Albums\\Nine Inch Nails - Closer To              │ │
│ │                      God(Explicit)\\5. Nine Inch'+25                                         │ │
│ │               self = <tidal_dl_ng.download.Download object at 0x00000256AD190B10>            │ │
│ │    status_download = False                                                                   │ │
│ │     video_download = False                                                                   │ │
│ │     videos_include = False                                                                   │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ C:\Python311\Lib\site-packages\tidal_dl_ng\download.py:223 in item                               │
│                                                                                                  │
│   220 │   │   │   if quality_audio:                                                              │
│   221 │   │   │   │   quality_audio_old: Quality = self.adjust_quality_audio(quality_audio)      │
│   222 │   │   │                                                                                  │
│ ❱ 223 │   │   │   file_extension = media.get_stream().get_stream_manifest().file_extension       │
│   224 │   │   │   # Use M4A extension for MP4 audio tracks, because it looks better and is com   │
│   225 │   │   │   file_extension = AudioExtensions.M4A if file_extension == AudioExtensions.MP   │
│   226                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ download_delay = False                                                                       │ │
│ │  file_template = 'Albums/Nine Inch Nails - Closer To God(Explicit)/{album_track_num}. Nine   │ │
│ │                  Inch Na'+19                                                                 │ │
│ │          media = <tidalapi.media.Track object at 0x00000256AD212F50>                         │ │
│ │       media_id = None                                                                        │ │
│ │     media_type = None                                                                        │ │
│ │  quality_audio = None                                                                        │ │
│ │  quality_video = None                                                                        │ │
│ │           self = <tidal_dl_ng.download.Download object at 0x00000256AD190B10>                │ │
│ │ video_download = True                                                                        │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ C:\Python311\Lib\site-packages\tidalapi\media.py:518 in get_stream_manifest                      │
│                                                                                                  │
│   515 │   │   return self.bit_depth, self.sample_rate                                            │
│   516 │                                                                                          │
│   517 │   def get_stream_manifest(self) -> "StreamManifest":                                     │
│ ❱ 518 │   │   return StreamManifest(self)                                                        │
│   519 │                                                                                          │
│   520 │   def get_manifest_data(self) -> str:                                                    │
│   521 │   │   try:                                                                               │
│                                                                                                  │
│ ╭────────────────────────── locals ───────────────────────────╮                                  │
│ │ self = <tidalapi.media.Stream object at 0x00000256AD219610> │                                  │
│ ╰─────────────────────────────────────────────────────────────╯                                  │
│                                                                                                  │
│ C:\Python311\Lib\site-packages\tidalapi\media.py:556 in __init__                                 │
│                                                                                                  │
│   553 │   │   self.manifest_mime_type = stream.manifest_mime_type                                │
│   554 │   │   if stream.is_MPD:                                                                  │
│   555 │   │   │   # See https://ottverse.com/structure-of-an-mpeg-dash-mpd/ for more details     │
│ ❱ 556 │   │   │   self.dash_info = DashInfo.from_mpd(stream.get_manifest_data())                 │
│   557 │   │   │   self.urls = self.dash_info.urls                                                │
│   558 │   │   │   self.codecs = self.dash_info.codecs                                            │
│   559 │   │   │   self.mime_type = self.dash_info.mime_type                                      │
│                                                                                                  │
│ ╭─────────────────────────────── locals ────────────────────────────────╮                        │
│ │   self = <tidalapi.media.StreamManifest object at 0x00000256AD1DBE50> │                        │
│ │ stream = <tidalapi.media.Stream object at 0x00000256AD219610>         │                        │
│ ╰───────────────────────────────────────────────────────────────────────╯                        │
│                                                                                                  │
│ C:\Python311\Lib\site-packages\tidalapi\media.py:672 in from_mpd                                 │
│                                                                                                  │
│   669 │   │   try:                                                                               │
│   670 │   │   │   return DashInfo(mpd_manifest)                                                  │
│   671 │   │   except:                                                                            │
│ ❱ 672 │   │   │   raise ManifestDecodeError                                                      │
│   673 │                                                                                          │
│   674 │   def __init__(self, mpd_xml):                                                           │
│   675 │   │   mpd = MPEGDASHParser.parse(                                                        │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ mpd_manifest = '<?xml version=\'1.0\' encoding=\'UTF-8\'?><MPD                               │ │
│ │                xmlns="urn:mpeg:dash:schema:mpd:2011"'+1482                                   │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
ManifestDecodeError

Your settings

{
    "skip_existing": "extension_ignore",
    "lyrics_embed": true,
    "lyrics_file": true,
    "video_download": false,
    "download_delay": true,
    "download_base_path": "D:\\_tempdone\\tidal",
    "quality_audio": "HI_RES_LOSSLESS",
    "quality_video": "1080",
    "format_album": "Albums/{album_artist} - {album_title}{album_explicit}/{album_track_num}. {artist_name} - {track_title}",
    "format_playlist": "Playlists/{playlist_name}/{artist_name} - {track_title}",
    "format_mix": "Mix/{mix_name}/{artist_name} - {track_title}",
    "format_track": "Tracks/{artist_name} - {track_title}{track_explicit}",
    "format_video": "Videos/{artist_name} - {track_title}{track_explicit}",
    "video_convert_mp4": false,
    "path_binary_ffmpeg": "C:\\ProgramData\\chocolatey\\lib\\ffmpeg-full\\tools\\ffmpeg\\bin\\ffmpeg.exe",
    "metadata_cover_dimension": "1280",
    "extract_flac": true,
    "downgrade_on_hi_res": false
}
exislow commented 6 months ago

This is unfortunately a tidalapi error. Would you please raise this issue there? Thanks!