Why does Picard refuse to save these MP3s?

I downloaded the MP3s from here Y'all Come : Patti Page : Free Download, Borrow, and Streaming : Internet Archive

I looked up the right album LP in Musicbrainz, dragged the tracks over and when I click Save, Picard puts red ! on all of them instead of saving the tag data to them, renaming, and moving them.

They aren’t read only. I converted them with Format Factory to 224K and those files Picard saved without a problem.

Hard to tell as is, but enabling the debug log might give more insight about what’s going on, see General Troubleshooting — MusicBrainz Picard v2.9.1 documentation

Also you can open contextual menu on the red icon (right click) and check Infos > Errors tab.

3 Likes

If you are unable to fix this using the information provided by @Zas and need help then we will need to know the following:

  1. Your operating system and Picard version
  2. The error message Zas referred to.

Less likely, but we may also need to know:

  1. The exact files you downloaded from the archive page.
  2. The Musicbrainz Release MBID that you associated the tracks with

Picard 2.9.1 on Windows 10 Pro x64 22H2

It’s the VBR MP3 files from the archive org page, minus the whole album file.

Picard automatically finds Release “Y’all Come” by Patti Page - MusicBrainz

I don’t have to drag any files over.

There is no errors tab when I right click and click, only tabs for Info and Artwork, so Picard is refusing to save them without telling me any reason why.

I set the shortcut to do the debug log, but I have no idea where it saves the log file. I don’t find one under the program directory in Program Files\Musicbrainz Picard nor anywhere under my User folder. Would be nice if help for software that says to enable creating a log file would say what the name of the file will be and where it will be.

There’s a picard.exe.log created today under C:\Users<me>\AppData\Roaming\MusicBrainz\Picard\picard.exe.log

But it’s empty. If that’s the debug log then Picard ain’t debuggin like it’s supposed to. I loaded the files into Picard, scanned, and attempted to save several times. Log file remains empty.

You can find the log in Picard under Help > Show Error/Debug log. If after saving there Picard shows an error there should be a detailed error message there.

Also what kind of error icon is it showing? The type of icon can give some broad details about the kind of error, see Status Icons — MusicBrainz Picard v2.9.1 documentation

The most common reason are permission errors due to lack of permission to write to the files or parent folder. On Windows this can be restricted by the readonly flag (check the folder as well) or by individual permissions set in the Security tab of the file’s or folder’s Properties dialog.

1 Like

When you say:

what are the steps you do to get Picard to automatically find this i.e. Scan or Cluster/Lookup or something else?

The info on how to view the debug log should be added to the page that tells how to change the shortcut to generate the debug log.

The ! in a red circle. Files are not read only.

D: 14:10:09,377 config.event:259: Config file update requested on thread 248
D: 14:10:11,953 formats/id3._save:374: Saving file ‘D:\BlueTooth module\yallcomesoundrec00page\01_Y_all_come.mp3’
E: 14:10:11,962 util/thread.run:69: Traceback (most recent call last):
File “util\thread.py”, line 66, in run
File “file.py”, line 393, in _save_and_rename
File “formats\id3.py”, line 551, in _save
File “formats\id3.py”, line 657, in _save_tags
File “mutagen_util.py”, line 184, in wrapper
File “mutagen_util.py”, line 155, in wrapper
File “mutagen\id3_file.py”, line 260, in save
File “mutagen\id3_file.py”, line 194, in _prepare_data
File “mutagen\id3_tags.py”, line 188, in _write
File “mutagen\id3_tags.py”, line 189, in
File “mutagen\id3_tags.py”, line 505, in save_frame
File “mutagen\id3_frames.py”, line 203, in _writeData
File “mutagen\id3_frames.py”, line 141, in _get_v23_frame
File “mutagen\id3_frames.py”, line 65, in init
File “mutagen\id3_frames.py”, line 76, in setattr
File “mutagen\id3_specs.py”, line 403, in validate
ValueError: Invalid frame ID

D: 14:10:11,962 formats/id3._save:374: Saving file ‘D:\BlueTooth module\yallcomesoundrec00page\02_I_don_t_care_if_the_sun_don_t_shine.mp3’
E: 14:10:11,964 util/thread.run:69: Traceback (most recent call last):
File “util\thread.py”, line 66, in run
File “file.py”, line 393, in _save_and_rename
File “formats\id3.py”, line 551, in _save
File “formats\id3.py”, line 657, in _save_tags
File “mutagen_util.py”, line 184, in wrapper
File “mutagen_util.py”, line 155, in wrapper
File “mutagen\id3_file.py”, line 260, in save
File “mutagen\id3_file.py”, line 194, in _prepare_data
File “mutagen\id3_tags.py”, line 188, in _write
File “mutagen\id3_tags.py”, line 189, in
File “mutagen\id3_tags.py”, line 505, in save_frame
File “mutagen\id3_frames.py”, line 203, in _writeData
File “mutagen\id3_frames.py”, line 141, in _get_v23_frame
File “mutagen\id3_frames.py”, line 65, in init
File “mutagen\id3_frames.py”, line 76, in setattr
File “mutagen\id3_specs.py”, line 403, in validate
ValueError: Invalid frame ID

D: 14:10:11,964 formats/id3._save:374: Saving file ‘D:\BlueTooth module\yallcomesoundrec00page\03_Let_me_go_lover.mp3’
E: 14:10:11,966 ui/item.error_append:108: <MP3File ‘01_Y_all_come.mp3’>: Invalid frame ID
D: 14:10:11,966 file.update:734: Updating file <MP3File ‘01_Y_all_come.mp3’>
E: 14:10:11,967 util/thread.run:69: Traceback (most recent call last):
File “util\thread.py”, line 66, in run
File “file.py”, line 393, in _save_and_rename
File “formats\id3.py”, line 551, in _save
File “formats\id3.py”, line 657, in _save_tags
File “mutagen_util.py”, line 184, in wrapper
File “mutagen_util.py”, line 155, in wrapper
File “mutagen\id3_file.py”, line 260, in save
File “mutagen\id3_file.py”, line 194, in _prepare_data
File “mutagen\id3_tags.py”, line 188, in _write
File “mutagen\id3_tags.py”, line 189, in
File “mutagen\id3_tags.py”, line 505, in save_frame
File “mutagen\id3_frames.py”, line 203, in _writeData
File “mutagen\id3_frames.py”, line 141, in _get_v23_frame
File “mutagen\id3_frames.py”, line 65, in init
File “mutagen\id3_frames.py”, line 76, in setattr
File “mutagen\id3_specs.py”, line 403, in validate
ValueError: Invalid frame ID

D: 14:10:11,967 formats/id3._save:374: Saving file ‘D:\BlueTooth module\yallcomesoundrec00page\04_No_one_to_cry_to.mp3’
E: 14:10:11,967 ui/item.error_append:108: <MP3File ‘02_I_don_t_care_if_the_sun_don_t_shine.mp3’>: Invalid frame ID
D: 14:10:11,967 file.update:734: Updating file <MP3File ‘02_I_don_t_care_if_the_sun_don_t_shine.mp3’>
E: 14:10:11,975 util/thread.run:69: Traceback (most recent call last):
File “util\thread.py”, line 66, in run
File “file.py”, line 393, in _save_and_rename
File “formats\id3.py”, line 551, in _save
File “formats\id3.py”, line 657, in _save_tags
File “mutagen_util.py”, line 184, in wrapper
File “mutagen_util.py”, line 155, in wrapper
File “mutagen\id3_file.py”, line 260, in save
File “mutagen\id3_file.py”, line 194, in _prepare_data
File “mutagen\id3_tags.py”, line 188, in _write
File “mutagen\id3_tags.py”, line 189, in
File “mutagen\id3_tags.py”, line 505, in save_frame
File “mutagen\id3_frames.py”, line 203, in _writeData
File “mutagen\id3_frames.py”, line 141, in _get_v23_frame
File “mutagen\id3_frames.py”, line 65, in init
File “mutagen\id3_frames.py”, line 76, in setattr
File “mutagen\id3_specs.py”, line 403, in validate
ValueError: Invalid frame ID

D: 14:10:11,975 formats/id3.save:374: Saving file 'D:\BlueTooth module\yallcomesoundrec00page\05_A_poor_man_s_roses__or_a_rich_man_s_gold.mp3’
E: 14:10:11,976 ui/item.error_append:108: <MP3File ‘03_Let_me_go_lover.mp3’>: Invalid frame ID
D: 14:10:11,976 file.update:734: Updating file <MP3File ‘03_Let_me_go_lover.mp3’>
E: 14:10:11,980 ui/item.error_append:108: <MP3File ‘04_No_one_to_cry_to.mp3’>: Invalid frame ID
D: 14:10:11,980 file.update:734: Updating file <MP3File ‘04_No_one_to_cry_to.mp3’>
E: 14:10:11,982 util/thread.run:69: Traceback (most recent call last):
File “util\thread.py”, line 66, in run
File “file.py”, line 393, in _save_and_rename
File “formats\id3.py”, line 551, in _save
File “formats\id3.py”, line 657, in _save_tags
File “mutagen_util.py”, line 184, in wrapper
File “mutagen_util.py”, line 155, in wrapper
File “mutagen\id3_file.py”, line 260, in save
File “mutagen\id3_file.py”, line 194, in _prepare_data
File “mutagen\id3_tags.py”, line 188, in _write
File “mutagen\id3_tags.py”, line 189, in
File “mutagen\id3_tags.py”, line 505, in save_frame
File “mutagen\id3_frames.py”, line 203, in _writeData
File “mutagen\id3_frames.py”, line 141, in _get_v23_frame
File “mutagen\id3_frames.py”, line 65, in init
File “mutagen\id3_frames.py”, line 76, in setattr
File “mutagen\id3_specs.py”, line 403, in validate
ValueError: Invalid frame ID

D: 14:10:11,982 formats/id3._save:374: Saving file ‘D:\BlueTooth module\yallcomesoundrec00page\06_Mom_and_dad_s_waltz.mp3’
E: 14:10:11,985 util/thread.run:69: Traceback (most recent call last):
File “util\thread.py”, line 66, in run
File “file.py”, line 393, in _save_and_rename
File “formats\id3.py”, line 551, in _save
File “formats\id3.py”, line 657, in _save_tags
File “mutagen_util.py”, line 184, in wrapper
File “mutagen_util.py”, line 155, in wrapper
File “mutagen\id3_file.py”, line 260, in save
File “mutagen\id3_file.py”, line 194, in _prepare_data
File “mutagen\id3_tags.py”, line 188, in _write
File “mutagen\id3_tags.py”, line 189, in
File “mutagen\id3_tags.py”, line 505, in save_frame
File “mutagen\id3_frames.py”, line 203, in _writeData
File “mutagen\id3_frames.py”, line 141, in _get_v23_frame
File “mutagen\id3_frames.py”, line 65, in init
File “mutagen\id3_frames.py”, line 76, in setattr
File “mutagen\id3_specs.py”, line 403, in validate
ValueError: Invalid frame ID

D: 14:10:11,985 formats/id3._save:374: Saving file ‘D:\BlueTooth module\yallcomesoundrec00page\07_The_old_spinning_wheel.mp3’
E: 14:10:11,987 util/thread.run:69: Traceback (most recent call last):
File “util\thread.py”, line 66, in run
File “file.py”, line 393, in _save_and_rename
File “formats\id3.py”, line 551, in _save
File “formats\id3.py”, line 657, in _save_tags
File “mutagen_util.py”, line 184, in wrapper
File “mutagen_util.py”, line 155, in wrapper
File “mutagen\id3_file.py”, line 260, in save
File “mutagen\id3_file.py”, line 194, in _prepare_data
File “mutagen\id3_tags.py”, line 188, in _write
File “mutagen\id3_tags.py”, line 189, in
File “mutagen\id3_tags.py”, line 505, in save_frame
File “mutagen\id3_frames.py”, line 203, in _writeData
File “mutagen\id3_frames.py”, line 141, in _get_v23_frame
File “mutagen\id3_frames.py”, line 65, in init
File “mutagen\id3_frames.py”, line 76, in setattr
File “mutagen\id3_specs.py”, line 403, in validate
ValueError: Invalid frame ID

D: 14:10:11,987 formats/id3.save:374: Saving file ‘D:\BlueTooth module\yallcomesoundrec00page\08_Mississippi_mud.mp3’
E: 14:10:11,989 ui/item.error_append:108: <MP3File '05_A_poor_man_s_roses__or_a_rich_man_s_gold
.mp3’>: Invalid frame ID
D: 14:10:11,989 file.update:734: Updating file <MP3File ‘05_A_poor_man_s_roses__or_a_rich_man_s_gold_.mp3’>
E: 14:10:11,990 ui/item.error_append:108: <MP3File ‘06_Mom_and_dad_s_waltz.mp3’>: Invalid frame ID
D: 14:10:11,990 file.update:734: Updating file <MP3File ‘06_Mom_and_dad_s_waltz.mp3’>
E: 14:10:11,991 ui/item.error_append:108: <MP3File ‘07_The_old_spinning_wheel.mp3’>: Invalid frame ID
D: 14:10:11,991 file.update:734: Updating file <MP3File ‘07_The_old_spinning_wheel.mp3’>
E: 14:10:11,992 util/thread.run:69: Traceback (most recent call last):
File “util\thread.py”, line 66, in run
File “file.py”, line 393, in _save_and_rename
File “formats\id3.py”, line 551, in _save
File “formats\id3.py”, line 657, in _save_tags
File “mutagen_util.py”, line 184, in wrapper
File “mutagen_util.py”, line 155, in wrapper
File “mutagen\id3_file.py”, line 260, in save
File “mutagen\id3_file.py”, line 194, in _prepare_data
File “mutagen\id3_tags.py”, line 188, in _write
File “mutagen\id3_tags.py”, line 189, in
File “mutagen\id3_tags.py”, line 505, in save_frame
File “mutagen\id3_frames.py”, line 203, in _writeData
File “mutagen\id3_frames.py”, line 141, in _get_v23_frame
File “mutagen\id3_frames.py”, line 65, in init
File “mutagen\id3_frames.py”, line 76, in setattr
File “mutagen\id3_specs.py”, line 403, in validate
ValueError: Invalid frame ID

D: 14:10:11,992 formats/id3.save:374: Saving file 'D:\BlueTooth module\yallcomesoundrec00page\09_South_of_the_border__down_Mexico_way.mp3’
E: 14:10:11,994 util/thread.run:69: Traceback (most recent call last):
File “util\thread.py”, line 66, in run
File “file.py”, line 393, in _save_and_rename
File “formats\id3.py”, line 551, in _save
File “formats\id3.py”, line 657, in _save_tags
File “mutagen_util.py”, line 184, in wrapper
File “mutagen_util.py”, line 155, in wrapper
File “mutagen\id3_file.py”, line 260, in save
File “mutagen\id3_file.py”, line 194, in _prepare_data
File “mutagen\id3_tags.py”, line 188, in _write
File “mutagen\id3_tags.py”, line 189, in
File “mutagen\id3_tags.py”, line 505, in save_frame
File “mutagen\id3_frames.py”, line 203, in _writeData
File “mutagen\id3_frames.py”, line 141, in _get_v23_frame
File “mutagen\id3_frames.py”, line 65, in init
File “mutagen\id3_frames.py”, line 76, in setattr
File “mutagen\id3_specs.py”, line 403, in validate
ValueError: Invalid frame ID

D: 14:10:11,995 formats/id3.save:374: Saving file ‘D:\BlueTooth module\yallcomesoundrec00page\10_Let_me_call_you_sweetheart.mp3’
E: 14:10:11,996 ui/item.error_append:108: <MP3File ‘08_Mississippi_mud.mp3’>: Invalid frame ID
D: 14:10:11,996 file.update:734: Updating file <MP3File ‘08_Mississippi_mud.mp3’>
E: 14:10:11,997 ui/item.error_append:108: <MP3File '09_South_of_the_border__down_Mexico_way
.mp3’>: Invalid frame ID
D: 14:10:11,997 file.update:734: Updating file <MP3File ‘09_South_of_the_border__down_Mexico_way_.mp3’>
E: 14:10:11,999 util/thread.run:69: Traceback (most recent call last):
File “util\thread.py”, line 66, in run
File “file.py”, line 393, in _save_and_rename
File “formats\id3.py”, line 551, in _save
File “formats\id3.py”, line 657, in _save_tags
File “mutagen_util.py”, line 184, in wrapper
File “mutagen_util.py”, line 155, in wrapper
File “mutagen\id3_file.py”, line 260, in save
File “mutagen\id3_file.py”, line 194, in _prepare_data
File “mutagen\id3_tags.py”, line 188, in _write
File “mutagen\id3_tags.py”, line 189, in
File “mutagen\id3_tags.py”, line 505, in save_frame
File “mutagen\id3_frames.py”, line 203, in _writeData
File “mutagen\id3_frames.py”, line 141, in _get_v23_frame
File “mutagen\id3_frames.py”, line 65, in init
File “mutagen\id3_frames.py”, line 76, in setattr
File “mutagen\id3_specs.py”, line 403, in validate
ValueError: Invalid frame ID

E: 14:10:12,004 ui/item.error_append:108: <MP3File ‘10_Let_me_call_you_sweetheart.mp3’>: Invalid frame ID
D: 14:10:12,004 file.update:734: Updating file <MP3File ‘10_Let_me_call_you_sweetheart.mp3’>

Thank’s. That’s rather interesting. One of the tags Picard tries to write ends up with an invalid ID3 frame name. I wonder how this comes to be. Do you have any scripts or plugins which might set tags?

Pretty sure I’ve not installed plugins that don’t come with Picard. The only one it’s updated is last fm.

I finally could reproduce this. It only happens if Picard is set to write ID3 v2.3 . The core issue is that the files from archive.org contain the pretty uncommon LINK frames and fill them with invalid data. LINK frames are meant to be used to read the data for a frame from another file instead of storing it in the file itself. For that reason LINK is expected to follow a very specific format. LINK frames are unsupported by the vast majority of tools.

Now the affected files store completely invalid data in this frame. The creator of the files clearly misunderstood the purpose and use and just stored the URL “Y'all Come : Patti Page : Free Download, Borrow, and Streaming : Internet Archive” there (the proper tag for storing that URL would have been one of the URL link frames, e.g. WCOM or a custom WXXX), totally ignoring the expected data format.

There are two workarounds available to you:

  • Change the ID3 format to v2.4 in Options > Tags > ID3. Since Picard 2.9 this has become the new default for new installs anyway.
  • Enable “Clear existing tags” in Options > Tags. This will remove all existing tags completely before writing new tags. As this will loose all tags Picard does not handle the LINK frames will be gone afterwards. You could save the affected files once with “Clear existing tags” enabled and afterwards disable this (potentially dangerous) option again.

In regards to fixing the issue I’m currently unsure if, how and where. Generally the issue lies with the files. But I have that suspicion this might be a common data error on archive.org downloaded files, so it probably would be good to ignore this.

Picard itself does not deal with the LINK frame at all. But the issue arises when the tag format gets downgraded to ID3 v2.3 by mutagen (the tagging library used by Picard). Picard could maybe implement a workaround by checking for invalid link frames and discarding them. Or even discover this specific case and change the LINK frames to proper WXXX frames.

6 Likes

I added [PICARD-2750] Failure saving MP3 files with invalid LINK frame - MetaBrainz JIRA to track this.

2 Likes

Happy to help find some odd error case. :slight_smile:

If it could pop up something like “File X has invalid tag data.” Display the suspect data and have discard and keep buttons.

3 Likes