nicfit / eyeD3

eyeD3 is a Python module and command line program for processing ID3 tags. Information about mp3 files (i.e bit rate, sample frequency, play time, etc.) is also provided. The formats supported are ID3v1 (1.0/1.1) and ID3v2 (2.3/2.4).
http://eyed3.nicfit.net/
GNU General Public License v3.0
541 stars 58 forks source link

Loading file indefinitely #575

Closed MauritzFunke closed 1 year ago

MauritzFunke commented 2 years ago

Hi, nice project, I want to use it to parse my music folder. Its working really well but it has with this one file. I'm pretty sure that I cannot upload the mp3 here but I'll post the debug log (although it does not show any kind of errors)


root@redacted:~# eyeD3 -l debug /media/src/Musik/House/House\ D-F/Flares\ -\ I\'m\ So\ Glad\ That\ Im\ A\ Woman\ \(The\ Vision\ Remix\).mp3
eyed3:DEBUG: command line args: Namespace(about_eyed3=False, log_level=[['debug']], debug_profile=False, debug_pdb=False, recursive=False, excludes=None, fs_encoding='utf-8', paths=["/media/src/Musik/House/House D-F/Flares - I'm So Glad That Im A Woman (The Vision Remix).mp3"], list_plugins=False, plugin=<classic.ClassicPlugin object at 0x7f5e07c2c9d0>, config=None, backup=False, quiet=False, no_color=False, no_config=False, artist=None, album=None, album_artist=None, title=None, track=None, track_total=None, track_offset=None, composer=None, orig_artist=None, disc_num=None, disc_total=None, genre=None, non_std_genres=False, release_year=None, simple_comment=None, artist_city=None, artist_state=None, artist_country=None, rename_pattern=None, tag_version=(3, None, None), convert_version=None, release_date=None, orig_release_date=None, recording_date=None, encoding_date=None, tagging_date=None, publisher=None, play_count=None, bpm=None, unique_file_ids=[], comments=[], remove_comment=[], remove_all_comments=False, lyrics=[], remove_lyrics=[], remove_all_lyrics=False, text_frames=[], user_text_frames=[], url_frames=[], user_url_frames=[], images=[], remove_image=[], remove_all_images=False, write_images_dir=None, objects=[], remove_object=[], write_objects_dir=None, remove_all_objects=False, popularities=[], remove_popularity=[], remove_v1=False, remove_v2=False, remove_all=False, remove_fids=[], max_padding=True, text_encoding=None, force_update=False, verbose=False, preserve_file_time=False)
eyed3:DEBUG: plugin is: <classic.ClassicPlugin object at 0x7f5e07c2c9d0>
eyed3.core:DEBUG: Loading file: /media/src/Musik/House/House D-F/Flares - I'm So Glad That Im A Woman (The Vision Remix).mp3
eyed3.core:DEBUG: File mime-type: audio/mpeg
eyed3.id3.headers:DEBUG: Located ID3 v2 tag
eyed3.id3.headers:DEBUG: TagHeader [major]: 2
eyed3.id3.headers:DEBUG: TagHeader [minor]: 3
eyed3.id3.headers:DEBUG: TagHeader [rev]: 0
eyed3.id3.headers:DEBUG: TagHeader [flags]: unsync(0) extended(0) experimental(0) footer(0)
eyed3.id3.headers:DEBUG: TagHeader [size string]: 0x00000805
eyed3.id3.headers:DEBUG: TagHeader [size]: 1029 (0x405)
eyed3.id3.frames:DEBUG: size_left: 1029
eyed3.id3.frames:DEBUG: +++++++++++++++++++++++++++++++++++++++++++++++++
eyed3.id3.frames:DEBUG: FrameSet: Reading Frame #1
eyed3.id3.headers:DEBUG: FrameHeader [start byte]: 10 (0xA)
eyed3.id3.headers:DEBUG: FrameHeader [id]: b'TPE1' (0x54504531)
eyed3.id3.headers:DEBUG: FrameHeader [data size]: 17 (0x11)
eyed3.id3.headers:DEBUG: FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
eyed3.id3.frames:DEBUG: FrameSet: Reading 17 (0x11) bytes of data from byte pos 20 (0x14)
eyed3.id3.frames:DEBUG: FrameSet: 17 bytes of data read
eyed3.id3.frames:DEBUG: createFrame (desc:Lead performer(s)/Soloist(s)) - (2, None, None) - <class 'eyed3.id3.frames.TextFrame'>
eyed3.id3.frames:DEBUG: createFrame 'b'TPE1'' with class '<class 'eyed3.id3.frames.TextFrame'>'
eyed3.id3.frames:DEBUG: Unicode encoding: utf_16
eyed3.id3.frames:DEBUG: TextFrame text: Flares
eyed3.id3.frames:DEBUG: size_left: 1002
eyed3.id3.frames:DEBUG: +++++++++++++++++++++++++++++++++++++++++++++++++
eyed3.id3.frames:DEBUG: FrameSet: Reading Frame #2
eyed3.id3.headers:DEBUG: FrameHeader [start byte]: 37 (0x25)
eyed3.id3.headers:DEBUG: FrameHeader [id]: b'TBPM' (0x5442504d)
eyed3.id3.headers:DEBUG: FrameHeader [data size]: 5 (0x5)
eyed3.id3.headers:DEBUG: FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
eyed3.id3.frames:DEBUG: FrameSet: Reading 5 (0x5) bytes of data from byte pos 47 (0x2F)
eyed3.id3.frames:DEBUG: FrameSet: 5 bytes of data read
eyed3.id3.frames:DEBUG: createFrame (desc:BPM (beats per minute)) - (2, None, None) - <class 'eyed3.id3.frames.TextFrame'>
eyed3.id3.frames:DEBUG: createFrame 'b'TBPM'' with class '<class 'eyed3.id3.frames.TextFrame'>'
eyed3.id3.frames:DEBUG: Unicode encoding: latin_1
eyed3.id3.frames:DEBUG: TextFrame text: 127
eyed3.id3.frames:DEBUG: size_left: 987
eyed3.id3.frames:DEBUG: +++++++++++++++++++++++++++++++++++++++++++++++++
eyed3.id3.frames:DEBUG: FrameSet: Reading Frame #3
eyed3.id3.headers:DEBUG: FrameHeader [start byte]: 52 (0x34)
eyed3.id3.headers:DEBUG: FrameHeader [id]: b'TCON' (0x54434f4e)
eyed3.id3.headers:DEBUG: FrameHeader [data size]: 15 (0xF)
eyed3.id3.headers:DEBUG: FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
eyed3.id3.frames:DEBUG: FrameSet: Reading 15 (0xF) bytes of data from byte pos 62 (0x3E)
eyed3.id3.frames:DEBUG: FrameSet: 15 bytes of data read
eyed3.id3.frames:DEBUG: createFrame (desc:Content type) - (2, None, None) - <class 'eyed3.id3.frames.TextFrame'>
eyed3.id3.frames:DEBUG: createFrame 'b'TCON'' with class '<class 'eyed3.id3.frames.TextFrame'>'
eyed3.id3.frames:DEBUG: Unicode encoding: utf_16
eyed3.id3.frames:DEBUG: TextFrame text: House
eyed3.id3.frames:DEBUG: size_left: 962
eyed3.id3.frames:DEBUG: +++++++++++++++++++++++++++++++++++++++++++++++++
eyed3.id3.frames:DEBUG: FrameSet: Reading Frame #4
eyed3.id3.headers:DEBUG: FrameHeader [start byte]: 77 (0x4D)
eyed3.id3.headers:DEBUG: FrameHeader [id]: b'TIT2' (0x54495432)
eyed3.id3.headers:DEBUG: FrameHeader [data size]: 97 (0x61)
eyed3.id3.headers:DEBUG: FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
eyed3.id3.frames:DEBUG: FrameSet: Reading 97 (0x61) bytes of data from byte pos 87 (0x57)
eyed3.id3.frames:DEBUG: FrameSet: 97 bytes of data read
eyed3.id3.frames:DEBUG: createFrame (desc:Title/songname/content description) - (2, None, None) - <class 'eyed3.id3.frames.TextFrame'>
eyed3.id3.frames:DEBUG: createFrame 'b'TIT2'' with class '<class 'eyed3.id3.frames.TextFrame'>'
eyed3.id3.frames:DEBUG: Unicode encoding: utf_16
eyed3.id3.frames:DEBUG: TextFrame text: I'm So Glad That Im A Woman (The Vision Remix)
eyed3.id3.frames:DEBUG: size_left: 855
eyed3.id3.frames:DEBUG: +++++++++++++++++++++++++++++++++++++++++++++++++
eyed3.id3.frames:DEBUG: FrameSet: Reading Frame #5
eyed3.id3.headers:DEBUG: FrameHeader [start byte]: 184 (0xB8)
eyed3.id3.headers:DEBUG: FrameHeader [id]: b'GEOB' (0x47454f42)
eyed3.id3.headers:DEBUG: FrameHeader [data size]: 1 (0x1)
eyed3.id3.headers:DEBUG: FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
eyed3.id3.frames:DEBUG: FrameSet: Reading 1 (0x1) bytes of data from byte pos 194 (0xC2)
eyed3.id3.frames:DEBUG: FrameSet: 1 bytes of data read
eyed3.id3.frames:DEBUG: createFrame (desc:General encapsulated object) - (2, None, None) - <class 'eyed3.id3.frames.ObjectFrame'>
eyed3.id3.frames:DEBUG: createFrame 'b'GEOB'' with class '<class 'eyed3.id3.frames.ObjectFrame'>'
eyed3.id3.frames:DEBUG: GEOB frame data size: 1`
MauritzFunke commented 2 years ago

After some investigation I noticed that the break conditions in line 810 of the file ./id3/frames.py is never met. And thus creating a while True: loop.

nicfit commented 2 years ago

I've seen this before, and IIRC even have a test file/case for it. But apparently to workaround is not enough. I'd your input file to really make any progress on it unfortunately.

MauritzFunke commented 2 years ago

So I fixed the issue, apparently some permissions weren't right and setting them fixed the issue, I think it was something in a temp directory or some logfile but I could be wrong

nicfit @.***> schrieb am Fr., 7. Okt. 2022, 20:32:

I've seen this before, and IIRC even have a test file/case for it. But apparently to workaround is not enough. I'd your input file to really make any progress on it unfortunately.

— Reply to this email directly, view it on GitHub https://github.com/nicfit/eyeD3/issues/575#issuecomment-1271936259, or unsubscribe https://github.com/notifications/unsubscribe-auth/AC7GDDWD5UV7S6CZGW4WCJLWCBUDZANCNFSM54QFLZZA . You are receiving this because you authored the thread.Message ID: @.***>