You are not logged in.

#1 2025-10-14 05:10:41

BigBunBun
Member
Registered: 2025-10-14
Posts: 5

ABCDE eyed3 Error

Good afternoon,

Whenever I try to rip a CD with title names that are in foreign letters or have an apostrophe, I get gibberish text. I have tried changing ID3TAGV in abcde.conf to both id3v2.3 and id3v2.4, and I get similar errors. Below is what I get after I rip a CD and the tagging process begins while using id3v2.3.

eyed3:ERROR:
Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 129, in __init__
    self.id = id
    ^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 164, in id
    raise ValueError(f"Unknown genre ID: {val}")
ValueError: Unknown genre ID: 255

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/eyed3/main.py", line 277, in _main
    retval = mainFunc(args, config)
  File "/usr/lib/python3.13/site-packages/eyed3/main.py", line 41, in main
    eyed3.utils.walk(args.plugin, p, excludes=args.excludes, fs_encoding=args.fs_encoding,
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                     recursive=recursive)
                     ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/utils/__init__.py", line 71, in walk
    handler.handleFile(os.path.abspath(path))
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/plugins/classic.py", line 475, in handleFile
    self.printTag(self.audio_file.tag)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/plugins/classic.py", line 588, in printTag
    genre = tag.genre if not self.args.non_std_genres else tag.non_std_genre
            ^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/tag.py", line 706, in _getGenre
    return Genre.parse(f[0].text, id3_std=id3_std)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 219, in parse
    return Genre(id=int(strip0Padding(g_str)))
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 137, in __init__
    raise GenreException from ex
eyed3.id3.GenreException

Has anyone experienced this issue before? What does the error mean? Thanks in advance.

Offline

#2 2025-10-14 08:24:36

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 69,056

Re: ABCDE eyed3 Error

ValueError: Unknown genre ID: 255

https://eyed3.readthedocs.io/en/latest/ … lugin.html
255 is no valid nor supported genre ID and the entire genre ID is ID3v1 ?

# mp3 tagging:
# There are three ways to tag MP3 files:
#   1. id3v1 (with id3)
#   2. id3v2.3 (with id3v2)
#   3. id3v2.4 (with eyeD3) This is the default
# Use ID3TAGV to select one of the older formats:
#ID3TAGV=id3v2.4
#ID3OPTS=
#ID3V2OPTS=
#EYED3OPTS="--set-encoding=utf16-LE"

From the config doc, id3v2 should be using id3v2 (from the extra repo) and I'd otherwise probably check the eyed3 encoding wrt your original issue

foreign letters or have an apostrophe, I get gibberish text

Please don't paraphrase, https://bbs.archlinux.org/viewtopic.php?id=57855
Post the "foreign letters" and the "gibberish" (cause it's most likely a codepage issue, notably when reading the file back - maybe try using iso8859-1 (2.3) or utf8 (2.4 only))

Offline

#3 Yesterday 01:52:49

BigBunBun
Member
Registered: 2025-10-14
Posts: 5

Re: ABCDE eyed3 Error

255 is no valid nor supported genre ID and the entire genre ID is ID3v1 ?

Not sure why it is showing up as 255 the album is post-punk which should be ID 175.

From the config doc, id3v2 should be using id3v2 (from the extra repo) and I'd otherwise probably check the eyed3 encoding wrt your original issue

This is what my config file looks like for mp3 tagging.

# mp3 tagging:
# There are three ways to tag MP3 files:
#   1. id3v1 (with id3)
#   2. id3v2.3 (with id3v2)
#   3. id3v2.4 (with eyeD3) This is the default
# Use ID3TAGV to select one of the older formats:
ID3TAGV=id3v2.3
#ID3OPTS=
#ID3V2OPTS=
#EYED3OPTS="--set-encoding=utf16-LE"

I'm using id3v2 from the extra repo. I updated my system and reinstalled id3v2 and no change happened. How can I go on about on checking eyed3 encoding?

My apologies for paraphrasing. Here is what I get. This repeats for each song in the album.

/home/user/Downloads/Молчат Дома - Этажи/7.Судно (Борис Рыжий).mp3                         [ 5.40 MB ]
-----------------------------------------------------------------------------------------------------
Adding image cover.jpg
Time: 02:22     MPEG1, Layer III        [ 320 kb/s @ 44100 Hz - Joint stereo ]
-----------------------------------------------------------------------------------------------------
ID3 v2.3:
title: СÑдно (ÐоÑÐ¸Ñ Ð Ñжий)
artist: ÐолÑÐ°Ñ Ðома
album: ЭÑажи
recording date: 2020
Uncaught exception: 

eyed3:ERROR: 
Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 129, in __init__
    self.id = id
    ^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 164, in id
    raise ValueError(f"Unknown genre ID: {val}")
ValueError: Unknown genre ID: 255

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/eyed3/main.py", line 277, in _main
    retval = mainFunc(args, config)
  File "/usr/lib/python3.13/site-packages/eyed3/main.py", line 41, in main
    eyed3.utils.walk(args.plugin, p, excludes=args.excludes, fs_encoding=args.fs_encoding,
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                     recursive=recursive)
                     ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/utils/__init__.py", line 71, in walk
    handler.handleFile(os.path.abspath(path))
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/plugins/classic.py", line 475, in handleFile
    self.printTag(self.audio_file.tag)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/plugins/classic.py", line 588, in printTag
    genre = tag.genre if not self.args.non_std_genres else tag.non_std_genre
            ^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/tag.py", line 706, in _getGenre
    return Genre.parse(f[0].text, id3_std=id3_std)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 219, in parse
    return Genre(id=int(strip0Padding(g_str)))
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 137, in __init__
    raise GenreException from ex
eyed3.id3.GenreException

Post the "foreign letters" and the "gibberish" (cause it's most likely a codepage issue, notably when reading the file back - maybe try using iso8859-1 (2.3) or utf8 (2.4 only))

Codepage as in encoding? Set EYED3OPTS="--set-encoding=utf8" in config file in the mp3 tagging section? Thanks.

Offline

#4 Yesterday 06:33:54

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 69,056

Re: ABCDE eyed3 Error

I'm using id3v2 from the extra repo.

Then why is eyed3 running?

Set EYED3OPTS="--set-encoding=utf8" in config file in the mp3 tagging section?

Yes. But that looks like ISO8859-5 - is the data from the disk or some internet database?

And return to 2.4

Offline

#5 Yesterday 13:17:42

BigBunBun
Member
Registered: 2025-10-14
Posts: 5

Re: ABCDE eyed3 Error

Then why is eyed3 running?

I'm not sure whether there is a way to disable it but if I don't have it installed in my system, (even though it says that eyed3 is an optional dependency for abcde) I am greeted with this error.

~/Downloads
❯ abcde -o 'mp3:-b 320' -G
[ERROR] abcde: eyeD3 is not in your path.
[INFO] Define the full path to the executable if it exists on your system.

Yes. But that looks like ISO8859-5 - is the data from the disk or some internet database?

And return to 2.4

I tried changing the encoding to iso8859-1 and utf8 and still have the same issue. If I am not mistaken, abcde uses metadata from musicbrainz which is a internet database.

I'm going to post my full abcde config file just for reference.

# System defaults for abcde version 2.8.2
# Nothing in this file is uncommented by default.
#
# If you wish to override these system-wide settings, create your own
# .abcde.conf file in your home directory.

# CDDB options

# Choose whether you want to use "cddb", "musicbrainz" and/or
# "cdtext". Default is "musicbrainz", but all can be specified in a
# comma delimited list to be tried sequentially. All the results will
# be displayed ready for user choice.
#CDDBMETHOD=musicbrainz

# If you wish to use a different CDDB server, edit this line.
# If you just wanted to use a proxy server, just set your http_proxy
# environment variable - wget will use it correctly.
#CDDBURL="http://freedb.freedb.org/~cddb/cddb.cgi"

# The CDDB protocol level.
# Right now 5 is latin1 output and 6 is UTF8 encoding.
#CDDBPROTO=6

# The CDDB protocol requires hello information, including a valid username
# and hostname. If you feel paranoid about giving away such info, edit this
# line - the format is username@hostname.
#HELLOINFO="`whoami`@`hostname`"

# This controls the email address CDDB changes are submitted to.
#CDDBSUBMIT=freedb-submit@freedb.org

# The following options control whether or not fetched CDDB entries
# are cached locally in $CDDBLOCALDIR
#CDDBCOPYLOCAL="n"
#CDDBLOCALDIR="$HOME/.cddb"
#CDDBLOCALRECURSIVE="y"

# If NOSUBMIT is set to y, then abcde will never prompt asking if you
# wish to submit your edited cddb file.
#NOSUBMIT=n

# If NOCDDBQUERY is set to y, then abcde will never even try to access
# the CDDB server; running abcde will automatically drop you into a
# blank cddb file to edit at your leisure.  This is the same as the
# -n option.  NOCDDBQUERY=y implies NOSUBMIT=y.
#NOCDDBQUERY=n

# Select here if you want to use the locally stored CDDB entries.
# This is useful if you do a lot of editing to those CDDB entries.
# Also, other tools like Grip store CDDB entries under $HOME/.cddb,
# so they can be reused when ripping CDs. (If this is set to "y" make
# sure that CDDBLOCALRECURSIVE is also set to "y".)
#CDDBUSELOCAL="n"

# List, separated with a comma, the fields we want the parsing function to
# output. Defaults to YEAR and GENRE, for a complete list of fields provided by
# CDDB.
# The fields are not case sensitive. Actually, "y,g" will work as fine as "Y,G"
# or "YEAR, GENRE"
#SHOWCDDBFIELDS=year,genre

# Specify the style of encoder to use here -
# oggenc, vorbize - for OGGENCODERSYNTAX
# lame, gogo, bladeenc, l3enc, xingmp3enc, mp3enc - for MP3ENCODERSYNTAX
# flac - the only supported for FLACENCODERSYNTAX at the moment
# speexenc - the only encoder for SPEEXENCODERSYNTAX
# mpcenc - encoder for MPCENCODERSYNTAX
# wavpack, ffmpeg - encoder for WVENCODERSYNTAX
# mac - for APENCODERSYNTAX
# fdkaac, ffmpeg, neroAacEnc, faac, qaac, fhgaacenc - for AACENCODERSYNTAX
# opusenc - for OPUSENCODERSYNTAX
# twolame, ffmpeg - for MP2ENCODERSYNTAX
# tta, ttaenc - for TTAENCODERSYNTAX
# ffmpeg - for AIFFENCODERSYNTAX
# default is a valid option for oggenc, lame, flac, speexenc, mpcenc, wavpack,
# fdkaac, opus, twolame and tta. Currently this affects the default location of the
# binary, the variable to pick encoder command-line options from, and where
# the options are given.
#MP3ENCODERSYNTAX=default
#OGGENCODERSYNTAX=default
#FLACENCODERSYNTAX=default
#SPEEXENCODERSYNTAX=default
#MKAENCODERSYNTAX=default
#MPCENCODERSYNTAX=default
#WVENCODERSYNTAX=default
#APENCODERSYNTAX=default
#AACENCODERSYNTAX=default
#OPUSENCODERSYNTAX=default
#MP2ENCODERSYNTAX=default
#TTAENCODERSYNTAX=default
#AIFFENCODERSYNTAX=default

# Specify the syntax of the normalize binary here - so far only 'normalize'
# is supported.
#NORMALIZERSYNTAX=default

# CD reader program to use - currently recognized options are 'cdparanoia',
# 'libcdio' (cd-paranoia),'icedax', 'cdda2wav', 'dagrab', 'pird',
# 'cddafs' (Mac OS X only) and 'flac'.
#CDROMREADERSYNTAX=cdparanoia

# CUE reader syntax for the CUE reader program to use.
# abcde supports 2 CUE modes: 'mkcue' and 'abcde.mkcue' so you can set the
# MKCUE variable accordingly. The 'abcde.mkcue' uses an internal
# implementation, without the need of an external program.
#CUEREADERSYNTAX=default

# Specify the program to convert a CUE sheet back to a CD disc ID for CDDB queries.
# Select between '/path/to/cue2discid' (provided as an example) or
# 'abcde.cue2discid', implemented internaly.
#CUE2DISCID=abcde.cue2discid

# Keep the wav files after encoding. Set it to "y" and remove "clean" from
# the list of default actions, since we purge the temp directory as default.
#KEEPWAVS=n

# Track padding: force abcde to pad tracks using 0, so every song uses a two
# digit entry. If set to "y", even a single song encoding outputs a file like
# 01.my_song.ext
#PADTRACKS=n

# Define if you want abcde to be non-interactive.
# Keep in mind that there is no way to deactivate it right now in the command
# line, so setting this option makes abcde to be always non-interactive.
#INTERACTIVE=n

# Specify 'nice'ness of the encoder, the CD reader and the distmp3 proc.
# This is a relative 'nice'ness (that is, if the parent process is at a
# nice level of 12, and the ENCNICE is set to 3, then the encoder will
# run with an absolute nice value of 15. Note also, that setting these
# to be empty will result in some default niceness increase (4 in tcsh
# and 10 using the bsdutils' nice).
#ENCNICE=10
#READNICE=10
#DISTMP3NICE=10

# Paths of programs to use

# Encoders:
#LAME=lame
#GOGO=gogo
#BLADEENC=bladeenc
#L3ENC=l3enc
#XINGMP3ENC=xingmp3enc
#MP3ENC=mp3enc
#VORBIZE=vorbize
#OGGENC=oggenc
#FLAC=flac
#SPEEXENC=speexenc
#MPCENC=mpcenc
#WVENC=wavpack
#APENC=mac
#FAAC=faac
#NEROAACENC=neroAacEnc
#FDKAAC=fdkaac
#OPUSENC=opusenc
#TWOLAME=twolame
# Note that if you use avconv rather than FFmpeg give the
# path to avconv here (e.g. FFMPEG=/usr/bin/avconv):
# FFMPEG=ffmpeg
#TTA=tta
#TTAENC=ttaenc

# The path for qaac, refalac and fhgaacenc  can be problematic as abcde
# cannot cope with the 'standard' Wine location with spaces. For example:
# "$HOME/.wine/drive_c/Program\ Files/qaac/qaac.exe" is problematic. Try instead:
# "$HOME/.wine/drive_c/qaac/qaac.exe"
# Installation instructions for qaac, refalac and fhgaacenc here:
#    http://www.andrews-corner.org/linux/qaac.html
#    http://www.andrews-corner.org/linux/fhgaacenc.html
# (Hint: Use QAAC=refalac to use the Open Source alac encoder...)
#QAAC=qaac
#FHGAACENC=fhgaacenc

# Taggers, rippers, replaygain etc:
#ID3=id3
#ID3V2=id3v2
#MID3V2=mid3v2
#EYED3=eyeD3
#CDPARANOIA=cdparanoia
#CD_PARANOIA=cd-paranoia
#CDDA2WAV=icedax
#PIRD=pird
#CDDAFS=cp
#CDDISCID=cd-discid
#CDDBTOOL=cddb-tool
#EJECT=eject
#MD5SUM=md5sum
#DISTMP3=distmp3
#VORBISCOMMENT=vorbiscomment
#METAFLAC=metaflac
#NORMALIZE=normalize-audio
#CDSPEED=eject
#VORBISGAIN=vorbisgain
#MKCUE=mkcue
#MKTOC=cdrdao
#DIFF=diff
#WVGAIN=wvgain
#WVTAG=wvtag
#APETAG=apetag
#GLYRC=glyrc
#IDENTIFY=identify
#CONVERT=convert
#DISPLAYCMD=display
#WINE=wine

# Options to call programs with:

# If HTTPGET is modified, the HTTPGETOPTS options should also be defined
# accordingly. If HTTPGET is changed, the default options will be set,
# if HTTPGETOPTS is empty or not defined.
#HTTPGET=wget
# for fetch (FreeBSD): HTTPGETOPTS="-q -o -"
# for wget: HTTPGETOPTS="-q -nv -O -"
# for curl (MacOSX): HTTPGETOPTS="-f -s"
#HTTPGETOPTS="-q -O -"

# MP3:
# For the best LAME encoder options have a look at:
# <http://wiki.hydrogenaudio.org/index.php?title=LAME#Recommended_encoder_settings>
# A good option is '-V 0' which gives Variable Bitrate Rate (VBR) recording
# with a target bitrate of ~245 Kbps and a bitrate range of 220...260 Kbps.
#LAMEOPTS=
#GOGOOPTS=
# Bladeenc still works with abcde in 2015, and the last release of bladeenc
# was in 2001! Settings that will produce a great encode are: '-br 192' 
#BLADEENCOPTS=
# L3enc still works with abcde in 2015, pretty amazing when you realise 
# that the last release of l3enc was in 1997! Settings that will produce 
# a great encode are: '-br 256000 -hq -crc'
#L3ENCOPTS=
#XINGMP3ENCOPTS=
# And mp3enc also still works with abcde in 2015 with the last release
# of mp3enc in 1998! Settings that will produce a great encode, albeit
# a slow one, are: '-v -br 256000 -qual 9 -no-is -bw 16500'
#MP3ENCOPTS=

# Ogg:
#VORBIZEOPTS=
#OGGENCOPTS=

# FLAC:
# The flac option is a workaround for an error where flac fails
# to encode with error 'floating point exception'. This is flac 
# error in get_console_width(), corrected in flac 1.3.1
#FLACOPTS="--silent"
# Options passed to MetaFlac for ReplayGain tags:
#FLACGAINOPTS="--add-replay-gain"
# Speex:
#SPEEXENCOPTS=

# MPP/MP+ (Musepack):
# For the encoder options look at 'mpcenc --longhelp', consider
# setting '--extreme' for a good quality encode.
#MPCENCOPTS=

# WavPack:
# Look at 'wavpack --help' for detailed options, consider using '-hx3' 
# for a good quality encode
#WAVENCOPTS=
# For Wavpack replay gain we set both the default of 'track gain' 
# as well as this option for 'album gain'. Better media players
# such as vlc can select either or neither.    
#WVGAINOPTS='-a'

# Monkey's Audio (ape)
# Without this set mac chokes unfortunately. Choices
# are from 1000 to 5000.
#APENCOPTS='-c4000'

#AIFF
# These options needed by FFmpeg for tagging and selection of id3v2 version:
#  1. '-write_id3v2 1' allows id3v2 tagging while '-write_id3v2 0' disables tagging
#  2. '-id3v2_version 4' gives version id3v2.4 while '3' gives id3v2.3 
#AIFFENCOPTS="-write_id3v2 1 -id3v2_version 4"

# M4A/AAC
# There are now 6 AAC encoders available to abcde, the default being
# fdkaacenc. Note that the old AACENCOPTS has been rendered obsolete by
# the following options, new to abcde 2.7:
#  1. fdkaac: see 'fdkaac --help' and consider using 
#     '--profile 2 --bitrate-mode 5 --afterburner 1'
#     for a good quality encode. 
#FDKAACENCOPTS='--bitrate 192k'
#  2. FFmpeg: Use the following to use the FFmpeg native encoder, adding
#     -strict -2 if you have an older FFmpeg:
#     FFMPEGENCOPTS="-c:a aac -b:a 192k"
#  3. neroAacEnc: see 'neroAacEnc -help' and
#     consider using '-q 0.65' for a good quality encode.
#NEROAACENCOPTS=
#  4. faac: see 'faac --long-help' and consider
#     using '-q 250' for a good quality encode.
#FAACENCOPTS=
#  5. qaac: simply run 'wine qaac.exe' to see all options and
#     consider using '--tvbr 100' for a good quality
#     encode or '--alac' for Apple Lossless Audio Codec
#QAACENCOPTS=
#  6. fhgaacenc: simply run 'wine fhgaacenc.exe' to see all options.
#     consider using '--vbr 4' for a decent quality encode.
#FHGAACENCOPTS=

# True Audio
# This is a lossless format so no options of any note available:
#TTAENCOPTS=

# OPUS
# For the encoder options look at: 'opusenc -h'
#OPUSENCOPTS=

# MP2
# Currently uses either twolame or ffmpeg, for twolame options look at:
# 'twolame --help',a highly recommended setting is "--bitrate 320".
#TWOLAMENCOPTS=

# FFmpeg or avconv can be used for several audio codecs, as well as being
# the default encoder for the Matroska container mka::
# 1. Encoding to WavPack (FFmpeg only: avconv does not have a native encoder).
#    Consider setting the following with a compression_level between 0-8:
#    FFMPEGENCOPTS="-c:a wavpack -compression_level 6"
# 2. Encoding to ALAC (both FFmpeg and avconv have a native encoder).
#    Consider using the following for either FFmpeg and avconv:
#    FFMPEGENCOPTS="-c:a alac"
# 3. Encoding to mp2
#    Consider using the following for either FFmpeg and avconv:
#    FFMPEGENCOPTS="-c:a mp2 -b:a 320k"
#FFMPEGENCOPTS=

# mp3 tagging:
# There are three ways to tag MP3 files:
#   1. id3v1 (with id3)
#   2. id3v2.3 (with id3v2)
#   3. id3v2.4 (with eyeD3) This is the default
# Use ID3TAGV to select one of the older formats:
ID3TAGV=id3v2.3
#ID3OPTS=
#ID3V2OPTS=
EYED3OPTS="--set-encoding=iso8859-1"

# Other options:
# The variable CDPARANOIOPTS is also used by GNU's cd-paranoia,
# so use this when setting CDROMREADERSYNTX=libcdio.
#CDPARANOIAOPTS=
#CDDA2WAVOPTS=
#PIRDOPTS="-p"
# Options for the CD ripper dagrab can be seen by running 'dagrab -h'.
# A good option to experiment with is the 'sectors per request' setting
# which by default is '-n 8'.
#DAGRABOPTS=
#CDDAFSOPTS="-f"
#CDDBTOOLOPTS=
#EJECTOPTS=
#DISTMP3OPTS=
#NORMALIZEOPTS=
#CDSPEEDOPTS="-x"
#CDSPEEDVALUE=""
#MKCUEOPTS=""
#MKTOCOPTS=""
#DIFFOPTS=""
#VORBISCOMMENTOPTS="-R"
#METAFLACOPTS="--no-utf8-convert"
# Bear in mind that the AtomicParsley option '--overWrite' is already
# used in abcde...
#ATOMICPARSLEYOPTS=

# Actions to take
# Comma-separated list of one or more of the following:
#  cddb,cue,read,normalize,encode,tag,move,replaygain,playlist,getalbumart,embedalbumart,clean,default
#   encode implies read
#   normalize implies read
#   tag implies cddb,read,encode
#   move implies cddb,read,encode,tag
#   replaygain implies cddb,read,encode,tag,move
#   playlist implies cddb
#   embedalbumart implies getalbumart
# An action can be added to the "default" action by specifying it along with
# "default", without having to repeat the default ones:
#  ACTIONS=default,playlist
# The default action list (referenced as "default") is defined in the following
# comment:
ACTIONS=cddb,read,encode,tag,move,clean,embedalbumart

# CD device you want to read from
# It can be defined as a singletrack flac file, but since it might change from
# file to file it makes little sense to define it here.
#CDROM=/dev/cdrom
# If we are using the IDE bus, we need CDPARANOIACDROMBUS defined as "d"
# If we are using the ide-scsi emulation layer, we need to define a "g"
#CDPARANOIACDROMBUS="d"

# If you'd like to make a default location that overrides the current
# directory for putting mp3's, uncomment this.
#OUTPUTDIR=`pwd`

# Or if you'd just like to put the temporary .wav files somewhere else
# you can specify that here
#WAVOUTPUTDIR=`pwd`

# OUTPUTTYPE can be any of a number of formats, either a single format
# (e.g. "ogg") or a combination of them separated with ","
# (e.g. "flac,mp3"). Currently recognised and supported are:
# "flac", "m4a", "mp3, "mpc", "ogg", "opus", "mka", "spx", "vorbis", "wav", "wv", "ape", "aiff"
OUTPUTTYPE="flac"

# Output filename format - change this to reflect your inner desire to
# organize things differently than everyone else :)
# You have the following variables at your disposal:
# OUTPUT, GENRE, ALBUMFILE, ARTISTFILE, TRACKFILE, TRACKNUM and YEAR.
# Make sure to single-quote this variable. abcde will automatically create
# the directory portion of this filename.
# NOTICE: OUTPUTTYPE has been deprecated in the OUTPUTFORMAT string.
# Since multiple-output was integrated we always append the file type
# to the files. Remove it from your user defined string if you are getting
# files like ".ogg.ogg".
OUTPUTFORMAT='${ARTISTFILE} - ${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}'

# Like OUTPUTFORMAT but for Various Artists discs.
VAOUTPUTFORMAT='Various-${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE} - ${TRACKFILE}'

# Like OUTPUTFORMAT and VAOUTPUTFORMAT but for the ONEFILE rips.
#ONETRACKOUTPUTFORMAT=$OUTPUTFORMAT
#VAONETRACKOUTPUTFORMAT=$VAOUTPUTFORMAT

# Define how many encoders to run at once. This makes for huge speedups
# on SMP systems. Defaults to 1. Equivalent to -j.
#MAXPROCS=2

# Support for systems with low disk space:
# n:	Default parallelization (read entire CD in while encoding)
# y:	No parallelization (rip, encode, rip, encode...)
#LOWDISK=n

# If set to y, enables batch mode normalization, which preserves relative
# volume differences between tracks of an album.
#BATCHNORM=n

# Enables nogap encoding when using the 'lame' encoder.
#NOGAP=y

# Set the playlist file location format. Uses the same variables and format
# as OUTPUTFORMAT. If the playlist is specified to be in a subdirectory, it
# will be created for you and the playlist will reference files from that
# subdirectory.
#PLAYLISTFORMAT='${ARTISTFILE}-${ALBUMFILE}.${OUTPUT}.m3u'
# If you want to prefix every filename in a playlist with an arbitrary
# string (such as 'http://you/yourstuff/'), use this option
#PLAYLISTDATAPREFIX=''

#Like PLAYLIST{FORMAT,DATAPREFIX} but for Various Artists discs:
#VAPLAYLISTFORMAT='${ARTISTFILE}-${ALBUMFILE}.${OUTPUT}.m3u'
#VAPLAYLISTDATAPREFIX=''

#This will give the playlist CR-LF line-endings, if set to "y".
#(some hardware players insist on CR-LF line-endings)
#DOSPLAYLIST=n

# album art download options (see glyrc's help for details with more detailed 
# examples here: https://github.com/sahib/glyr/wiki/Commandline-arguments).
# For example use '--formats jpg;jpeg' to only search for JPEG images
# These options: '--from <provider>' and '--lang <langcode>' might also be useful
#GLYRCOPTS=
#ALBUMARTFILE="cover.jpg"
#ALBUMARTTYPE="JPEG"

# Options for ImageMagick commands used by album art processing when available
# For example: CONVERTOPTS="-colorspace RGB -resize 600x600>"
# to make the image RGB and fit inside 600x600 while keeping the aspect ratio
#IDENTIFYOPTS=
#CONVERTOPTS=
#DISPLAYCMDOPTS="-resize 512x512 -title abcde_album_art"
# By default convert is only called when the image type is different from
# ALBUMARTTYPE, use ALBUMARTALWAYSCONVERT="y" to always call convert
#ALBUMARTALWAYSCONVERT="n"

# Custom filename munging:
# By default, abcde will do the following to CDDB data to get a useful filename:
# 1. Delete any dots preceding the title (first sed command)
# 2. Replace all spaces with an underscore (second sed command). Simply remove
#   this if you prefer spaces.
# 3. Delete a grab bag of characters which variously Windows and Linux do not permit 
#   (tr command). Remove any of these from the list if you wish to actually use them.
#   
mungefilename ()
{
	echo "$@" | sed -e 's/^\.*//' | tr -d ":><|*/\"'?[:cntrl:]"
}
#
# More examples for custom filename munging:
#
# VARIANT 1: (works anywhere style)
#
# Translate everything to lowercase
# replace ALL chars that may cause trouble for Linux, Windows and DOS
# with '_' (underscore); remove double underscores; remove leading and
# trailing underscores; recode to flat ASCII. WARNING! You'll likely
# need to install "recode" on your system as an extra package to use
# this.
#
#mungefilename ()
#{
#	echo "$@" | tr [A-Z] [a-z] | \
#			sed "s/[- ,.:\'\/!@#\?\$%\^&()]/_/g" | \
#			sed 's/_[_]*/_/g' | \
#			sed 's/^_*//' | \
#			sed 's/_*$//' | \
#			recode -f iso8859-1..flat
#}
#
# VARIANT 2: (legible style)
#
# Accept all chars, EXCEPT '/' (obvious) or ":" (because eyeD3 cannot
# cope with ":" in pathnames): replace them with " " (space).
# Additionally, replace contiguous spaces with one space; strip
# leading spaces; strip trailing spaces and recode to flat filenames.
#
# mungefilename ()
# {
# 	echo "$@" |	sed "s/[:\/]/ /g" | \
# 			sed 's/ [ ]*/ /g' | \
# 			sed 's/^ *//' | \
# 			sed 's/ *$//' | \
# 			recode -f iso8859-1..flat
# }


#
# Custom filename munging specific to track names:
# By default this function will call the mungefilename function.
#mungetrackname ()
#{
#	mungefilename $@
#}
#
# Custom filename munging specific to artist names:
# By default this function will call the mungefilename function.
#mungeartistname ()
#{
#	mungefilename $@
#}
#
# Custom filename munging specific to album names:
# By default this function will call the mungefilename function.
#mungealbumname ()
#{
#	mungefilename $@
#}

# Custom genre munging:
# By default we just transform uppercase to lowercase. Not much of a fancy
# function, with not much use, but one can disable it or just turn the first
# Uppercase.
#mungegenre ()
#{
#	echo $CDGENRE | tr "[:upper:]" "[:lower:]"
#}


# Custom pre-read function
# By default it does nothing.
# You can set some things to get abcde function in better ways:
# * Close the CD tray using eject -t (if available in eject and supported by
#   your CD device.
# * Set the CD speed. You can also use the built-in options, but you can also
#   set it here. In Debian, eject -x and cdset -x do the job.
# KEEP IN MIND that executables included in pre_read must be in your $PATH or
# you have to define them with full /path/to/binary
# Uncomment and substitute the ":" with your commands.
#pre_read ()
#{
#:
#}

# Custom post-read function
# By default it does nothing.
# You can set some things to get abcde function in better ways:
# * Store a copy of the CD TOC.
# KEEP IN MIND that executables included in post_read must be in your $PATH or
# you have to define them with full /path/to/binary
# Uncomment and substitute the ":" with your commands.
#post_read ()
#{
#:
#}

# post_encode
# By default it does nothing.
# You can set some things to get abcde function in better ways:
# * Move the resulting directory over the network
# * Compare results with a previously made run, for tests
# KEEP IN MIND that executables included in post_encode must be in your $PATH or
# you have to define them with full /path/to/binary
# Uncomment and substitute the ":" with your commands.
#post_encode ()
#{
#:
#}

# If you'd like to have abcde eject the cdrom after all the tracks have been
# read, uncomment the following line.
EJECTCD=y

# To encode on the remote machines foo, bar, baz, quux, and qiix, as well as
# on the local machine (requires distmp3 to be installed on local machine and
# distmp3host to be installed and running on all remote machines - see README)
#REMOTEHOSTS=foo,bar,baz,quux,qiix

# Set to 1,2, etc. to obtain some information about actions happening in the background
# Useful if you have a slow network or CDDB servers seem unresponsive.
#EXTRAVERBOSE=0

Offline

#6 Yesterday 14:11:05

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 69,056

Re: ABCDE eyed3 Error

I tried changing the encoding to iso8859-1 and utf8

neither would help if the input is iso8859-5

Do yo have https://aur.archlinux.org/packages/abcd … rainz-meta ?
Also, just to be sure the problem isn't your locale:

locale

The musicbrainz entries look ok.
What btw happens if you manually

eyeD3 -a "Молчат Дома" -A "Этажи" -t "Судно (Борис Рыжий)" -n 7 "/home/user/Downloads/Молчат Дома - Этажи/7.Судно (Борис Рыжий).mp3"

?

Offline

#7 Yesterday 20:57:21

BigBunBun
Member
Registered: 2025-10-14
Posts: 5

Re: ABCDE eyed3 Error

Hey Seth thanks for the help so far!

Do yo have https://aur.archlinux.org/packages/abcd … rainz-meta ?

Yes, I got it installed.

Also, just to be sure the problem isn't your locale:

This is what I get when I run locale command:

❯ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

The musicbrainz entries look ok.
What btw happens if you manually

eyeD3 -a "Молчат Дома" -A "Этажи" -t "Судно (Борис Рыжий)" -n 7 "/home/user/Downloads/Молчат Дома - Этажи/7.Судно (Борис Рыжий).mp3"

?

This is what I get when I run the command:

❯ eyeD3 -a "Молчат Дома" -A "Этажи" -t "Судно (Борис Рыжий)" -n 7 "/home/user/Downloads/Молчат Дома - Этажи/7.Судно (Борис Рыжий).mp3"
/home/user/Downloads/Молчат Дома - Этажи/7.Судно (Борис Рыжий).mp3                                                                                                                                 [ 5.40 MB ]
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Setting artist: Молчат Дома
Setting album: Этажи
Setting title: Судно (Борис Рыжий)
Setting track info: (7, 9)
Time: 02:22     MPEG1, Layer III        [ 320 kb/s @ 44100 Hz - Joint stereo ]
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID3 v2.3:
title: Судно (Борис Рыжий)
artist: Молчат Дома
album: Этажи
recording date: 2020
Uncaught exception: 

eyed3:ERROR: 
Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 129, in __init__
    self.id = id
    ^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 164, in id
    raise ValueError(f"Unknown genre ID: {val}")
ValueError: Unknown genre ID: 255

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/eyed3/main.py", line 277, in _main
    retval = mainFunc(args, config)
  File "/usr/lib/python3.13/site-packages/eyed3/main.py", line 41, in main
    eyed3.utils.walk(args.plugin, p, excludes=args.excludes, fs_encoding=args.fs_encoding,
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                     recursive=recursive)
                     ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/utils/__init__.py", line 71, in walk
    handler.handleFile(os.path.abspath(path))
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/plugins/classic.py", line 475, in handleFile
    self.printTag(self.audio_file.tag)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/plugins/classic.py", line 588, in printTag
    genre = tag.genre if not self.args.non_std_genres else tag.non_std_genre
            ^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/tag.py", line 706, in _getGenre
    return Genre.parse(f[0].text, id3_std=id3_std)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 219, in parse
    return Genre(id=int(strip0Padding(g_str)))
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 137, in __init__
    raise GenreException from ex
eyed3.id3.GenreException

Perhaps this is an issue with the eyed3 package? This in the one I am using. https://aur.archlinux.org/packages/python-eyed3

Offline

#8 Yesterday 21:33:14

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 69,056

Re: ABCDE eyed3 Error

You locale is fine and the manual eyeD3 invocation works (try 'eyed3 --genre 12 -a "Молчат Дома" -A "Этажи" -t "Судно (Борис Рыжий)" -n 7 "/home/user/Downloads/Молчат Дома - Этажи/7.Судно (Борис Рыжий).mp3"' to hopefully skip the "invalid genre" error, might come out of your eyed3 config?)
Meaning the bogus strings are passed there by abcde meaning we need to figure where it gets those.

Line 2639 has

		# XXX FIXME - this is a hack and should be replaced by proper
		# character set tracking for the CDDB data we have.
		if [ "$CDDBPROTO" -ge 6 ]; then
			# convert to Unicode
			iconv -f iso-8859-1 -t utf-8 <"${SOURCE_WORKDIR}/audio.cddb" >"${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
		else
			# copy verbatim, assuming CD-TEXT is in ISO-8859-1 format
			# apparently icedax/cdda2wav have no support for 16-bit
			# characters yet, either
			cp -p "${SOURCE_WORKDIR}/audio.cddb" "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
		fi

you might want to

echo using horrible hacks

here to see whether you're hitting that codepath.
and 4835 has

		if $EYED3 --help 2>&1 | grep -q -- --set-encoding ; then
			# only if it offers the --set-encoding, assume <= 0.6.x
			ID3SYNTAX=eyed3_06
			TAGGEROPTS="--set-encoding utf16-LE $EYED3OPTS"
		else
			# anything wrong, any failure, assume >= 0.7
			ID3SYNTAX=eyed3
			TAGGEROPTS="--encoding utf16 $EYED3OPTS"
		fi

which seem to unconditionally set utf16 and 900

							${ENCODING:+--set-encoding="$ENCODING"} \
							${TPE2:+--set-text-frame=TPE2:"$TPE2"} \

and some other location use the encoding from the "-E" option, so you might want to try "-E utf8" and get rid of the unconditional UTF16 lines there (UTF8 is legal in v2.4)

Offline

#9 Today 02:19:53

BigBunBun
Member
Registered: 2025-10-14
Posts: 5

Re: ABCDE eyed3 Error

You locale is fine and the manual eyeD3 invocation works (try 'eyed3 --genre 12 -a "Молчат Дома" -A "Этажи" -t "Судно (Борис Рыжий)" -n 7 "/home/user/Downloads/Молчат Дома - Этажи/7.Судно (Борис Рыжий).mp3"' to hopefully skip the "invalid genre" error, might come out of your eyed3 config?)

This is the output:

❯ eyeD3 --genre 12 -a "Молчат Дома" -A "Этажи" -t "Судно (Борис Рыжий)" -n 7 "/home/user/Downloads/Молчат Дома - Этажи/7.Судно (Борис Рыжий).mp3"
/home/dan/Downloads/Молчат Дома - Этажи/7.Судно (Борис Рыжий).mp3                                                                            [ 5.40 MB ]
--------------------------------------------------------------------------------------------------------------------------------------------------------
Setting artist: Молчат Дома
Setting album: Этажи
Setting title: Судно (Борис Рыжий)
Setting genre: 12
Setting track info: (7, 9)
Time: 02:22     MPEG1, Layer III        [ 320 kb/s @ 44100 Hz - Joint stereo ]
--------------------------------------------------------------------------------------------------------------------------------------------------------
ID3 v2.3:
title: Судно (Борис Рыжий)
artist: Молчат Дома
album: Этажи
recording date: 2020
track: 7/9              genre: Other (id 12)
Writing ID3 version v2.3
Uncaught exception: 'latin-1' codec can't encode characters in position 0-4: ordinal not in range(256)

eyed3:ERROR: 'latin-1' codec can't encode characters in position 0-4: ordinal not in range(256)
Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/eyed3/main.py", line 277, in _main
    retval = mainFunc(args, config)
  File "/usr/lib/python3.13/site-packages/eyed3/main.py", line 41, in main
    eyed3.utils.walk(args.plugin, p, excludes=args.excludes, fs_encoding=args.fs_encoding,
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                     recursive=recursive)
                     ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/utils/__init__.py", line 71, in walk
    handler.handleFile(os.path.abspath(path))
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/plugins/classic.py", line 504, in handleFile
    self.audio_file.tag.save(
    ~~~~~~~~~~~~~~~~~~~~~~~~^
            version=version, encoding=self.args.text_encoding,
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            backup=self.args.backup,
            ^^^^^^^^^^^^^^^^^^^^^^^^
            preserve_file_time=self.args.preserve_file_time,
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            max_padding=max_padding)
            ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/tag.py", line 917, in save
    self._saveV2Tag(version, encoding, max_padding)
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/tag.py", line 1130, in _saveV2Tag
    rewrite_required, tag_data, padding = self._render(version,
                                          ~~~~~~~~~~~~^^^^^^^^^
                                                       curr_tag_size,
                                                       ^^^^^^^^^^^^^^
                                                       max_padding)
                                                       ^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/tag.py", line 1042, in _render
    raw_frame = f.render()
  File "/usr/lib/python3.13/site-packages/eyed3/id3/frames.py", line 314, in render
    self.text.encode(id3EncodingToString(self.encoding)))
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-4: ordinal not in range(256)

This is the change I made to line 2639. (Let me know if this is what you meant by echo using horrible hacks).

# XXX FIXME - this is a hack and should be replaced by proper
		# character set tracking for the CDDB data we have.
		if [ "$CDDBPROTO" -ge 6 ]; then
			# convert to Unicode
			iconv -f iso-8859-1 -t utf-8 <"${SOURCE_WORKDIR}/audio.cddb" >"${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
			echo "if you see this then it worked 1"
		else
			# copy verbatim, assuming CD-TEXT is in ISO-8859-1 format
			# apparently icedax/cdda2wav have no support for 16-bit
			# characters yet, either
			cp -p "${SOURCE_WORKDIR}/audio.cddb" "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
			echo "If you find this then it worked 2"
		fi

This is the output after I rip the CD with those changes:

/home/user/Downloads/Молчат Дома - Этажи/7.Судно (Борис Рыжий).mp3                                                                            [ 5.40 MB ]
--------------------------------------------------------------------------------------------------------------------------------------------------------
Adding image cover.jpg
Time: 02:22     MPEG1, Layer III        [ 320 kb/s @ 44100 Hz - Joint stereo ]
--------------------------------------------------------------------------------------------------------------------------------------------------------
ID3 v2.3:
title: СÑдно (ÐоÑÐ¸Ñ Ð Ñжий)
artist: ÐолÑÐ°Ñ Ðома
album: ЭÑажи
recording date: 2020
Uncaught exception: 

eyed3:ERROR: 
Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 129, in __init__
    self.id = id
    ^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 164, in id
    raise ValueError(f"Unknown genre ID: {val}")
ValueError: Unknown genre ID: 255

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/eyed3/main.py", line 277, in _main
    retval = mainFunc(args, config)
  File "/usr/lib/python3.13/site-packages/eyed3/main.py", line 41, in main
    eyed3.utils.walk(args.plugin, p, excludes=args.excludes, fs_encoding=args.fs_encoding,
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                     recursive=recursive)
                     ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/utils/__init__.py", line 71, in walk
    handler.handleFile(os.path.abspath(path))
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/plugins/classic.py", line 475, in handleFile
    self.printTag(self.audio_file.tag)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/plugins/classic.py", line 588, in printTag
    genre = tag.genre if not self.args.non_std_genres else tag.non_std_genre
            ^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/tag.py", line 706, in _getGenre
    return Genre.parse(f[0].text, id3_std=id3_std)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 219, in parse
    return Genre(id=int(strip0Padding(g_str)))
  File "/usr/lib/python3.13/site-packages/eyed3/id3/__init__.py", line 137, in __init__
    raise GenreException from ex
eyed3.id3.GenreException

Is this change correct?

# eyeD3 version 0.7 changed syntax
		if $EYED3 --help 2>&1 | grep -q -- --set-encoding ; then
			# only if it offers the --set-encoding, assume <= 0.6.x
			ID3SYNTAX=eyed3_06
			TAGGEROPTS="--set-encoding utf16-LE $EYED3OPTS"
		else
			# anything wrong, any failure, assume >= 0.7
			ID3SYNTAX=eyed3
			TAGGEROPTS="--encoding utf8 $EYED3OPTS"
		fi

What do I have to change in this section?

${ENCODING:+--set-encoding="$ENCODING"} \
${TPE2:+--set-text-frame=TPE2:"$TPE2"} \

some other location use the encoding from the "-E" option, so you might want to try "-E utf8" and get rid of the unconditional UTF16 lines there

Replace any instance of "utf16" to "-E utf8"?

Offline

Board footer

Powered by FluxBB