I've been using beets for years now. Recently I got a new laptop and installed the latest version of beets (not my homebrew fork) and every time I move files with beets, I run into the following problem: the laptop freezes, to the extent that I have to shut it down by pressing the power button until it dies, and then when restarting my laptop and mounting the external harddisk where my music and my database is on, I get an error message that the disk is not formatted correctly. I can repair it with the disk formatting tool of ubuntu, but it is very annoying and scary, as every time I get a warning that some of my data might be lost.
Setup
OS: Ubuntu 24.04
Python version: 3.12.3
beets version: 1.6.0
Turning off plugins made problem go away (yes/no): didn't check, too scared
My configuration (output of beet config) is:
directory: /media/dorian/Music/
library: /media/dorian/Music/Musicdata.db
bell: yes
asciify_paths: yes
threaded: yes
mbsync:
performer_info: yes
import:
copy: no
write: no
detail: yes
languages: en
duplicate_action: keep
per_disc_numbering: yes
pluginpath: /home/dorian/beets-alternatives/beetsplug
plugins: duplicates info badfiles fromfilename mbsubmit mbcollection fetchart embedart chroma parentwork inline bucket alternatives scrub mbsync missing embedart
scrub:
auto: no
color: yes
chroma:
auto: no
item_fields:
pw: "try:\n pw=parentwork\n try: \n pw+=' ('+parentwork_disambig+')'\n except NameError:\n pass\n return pw\nexcept NameError:\n return 'No_Work'\n"
aa: "singleton=album_id==None or album_id==''\nif not singleton:\n return album\nelse:\n return artist_sort\n"
aaa: "singleton=album_id==None or album_id==''\nif not singleton:\n if ';' in albumartist_sort:\n aaa=albumartist_sort.split(';')[1].strip()\n else: \n aaa=albumartist_sort\n return aaa\n"
pc: "try: \n return parent_composer_sort\n parent_composer_sort.split(',')\n pc=[]\n fam=True\n for p in parent_composer_sort.split(','):\n if p in ['Sir','Dame', 'van', 'I', 'II', 'III', 'IV']:\n continue\n if fam:\n pc.append(p.strip())\n else: \n a=p.split()\n b=[]\n for x in a:\n if previous.strip()=='Strauss' or x=='van' or x=='von' or x=='de' or x==u'd\u2019' or x==\"d'\":\n b.append(x)\n else: \n b.append(x.strip()[0])\n pc.append(' '.join(b))\n previous=p\n if p.strip() != '[anonymous]' and p.strip() != '[unknown]' and p.strip() != '[traditional]' and p!= 'Various Artists':\n fam=not fam\n return(', '.join(pc))\nexcept NameError:\n return 'No_Parent_Composer'\n"
tr: "singleton=album_id==None or album_id==''\nif singleton:\n tr=title\nelse:\n if disc==0:\n tr=title\n else:\n tr=str(disc)+'-' + str(track) + ' ' + title\nreturn tr\n"
work_prefix: "try: \n parentwork\nexcept NameError: \n return 'None'\npartnames = ['Concerto', 'Concerti']\nfor n in partnames: \n if n.upper() in parentwork.upper(): \n return 'Concertos'\npartnames = ['Cantata', 'Cantate','Kantate']\nfor n in partnames: \n if n.upper() in parentwork.upper(): \n return 'Cantates'\npartnames = ['choralsatz']\nfor n in partnames: \n if n.upper() in parentwork.upper(): \n return 'Chorals\xE4tze'\npartnames = ['symphony', 'symphonie', 'sinfonie']\nfor n in partnames: \n if n.upper() in parentwork.upper(): \n return 'Symphonies'\npartnames = ['Church']\nfor n in partnames: \n if n.upper() in parentwork.upper() and parent_composer_sort=='Mozart, Wolfgang Amadeus': \n return 'Church Sonatas'\npartnames = ['Mass', 'Messe', 'Missa']\nfor n in partnames: \n if n.upper() in parentwork.upper() and parent_composer_sort=='Mozart, Wolfgang Amadeus': \n return 'Messes'\npartnames = ['Quartet', 'Quatuor']\n\
for n in partnames: \n if n.upper() in parentwork.upper(): \n return 'Quatuors'\npartnames = ['Quintet']\nfor n in partnames: \n if n.upper() in parentwork.upper(): \n return 'Quintettes'\npartnames = ['Trio']\nfor n in partnames: \n if n.upper() in parentwork.upper(): \n return 'Trios'\npartnames = ['Sonate','Sonata']\nfor n in partnames: \n if n.upper() in parentwork.upper(): \n return 'Sonates'\npartnames = ['choralbearbeitung']\nfor n in partnames: \n if n.upper() in parentwork.upper(): \n return 'Choralbearbeitungen'\npartnames = ['Partita']\nfor n in partnames: \n if n.upper() in parentwork.upper(): \n return 'Partitas'\nreturn 'None'\n"
type: 'return ''classical''
'
dupe: "singleton=album_id==None or album_id==''\nif singleton:\n return mb_trackid\nelse: \n return mb_trackid+str(track)+mb_releasegroupid\n\n \n"
ui:
color: yes
colors:
text_success: green
text_warning: yellow
text_error: red
text_highlight: red
text_highlight_minor: lightgray
action_default: turquoise
action: blue
embedart:
remove_art_file: yes
maxwidth: 0
auto: yes
compare_threshold: 0
ifempty: no
quality: 0
missing:
count: no
total: no
album: no
duplicates:
tiebreak:
items: [bitrate]
keys: [dupe]
album: no
checksum: ''
copy: ''
count: no
delete: no
format: ''
full: no
merge: no
move: ''
path: no
strict: no
tag: ''
parentwork:
force: no
auto: no
mbsubmit:
format: $title - $artist ($length)
threshold: strong
acoustid:
apikey: REDACTED
musicbrainz:
user: dosoe
pass: REDACTED
alternatives:
by-work:
directory: /media/dorian/My Passport/by-work
paths:
comp type::'non-classical': Non-Classique/$aaa/$aa/$tr
type::'non-classical': Non-Classique/$aaa/$aa/$tr
comp type::'medieval': Medieval/$aaa/$aa/$tr
type::'medieval': Medieval/$aaa/$aa/$tr
comp pw::'No_Work': Classique/$artist_sort/Divers/$aaa/$aa/$tr
pw::'No_Work': Classique/$artist_sort/Divers/$aaa/$aa/$tr
comp pc::'No_Parent_Composer': Classique/$artist_sort/$pw/$aaa/$aa/$tr
pc::'No_Parent_Composer': Classique/$artist_sort/$pw/$aaa/$aa/$tr
comp work_prefix::'None': Classique/$pc/$pw/$aaa/$aa/$tr
work_prefix::'None': Classique/$pc/$pw/$aaa/$aa/$tr
comp: Classique/$pc/$work_prefix/$pw/$aaa/$aa/$tr
default: Classique/$pc/$work_prefix/$pw/$aaa/$aa/$tr
formats: link
paths:
singleton: by-album/$artist_sort/%ifdef{composer,/$composer_sort/$title,$title}
comp: by-album/$albumartist_sort/$album/$disc-$track $title
default: by-album/$albumartist_sort/$album/$disc-$track $title
mbcollection:
auto: no
collection: ''
remove: no
fetchart:
auto: yes
minwidth: 0
maxwidth: 0
quality: 0
max_filesize: 0
enforce_ratio: no
cautious: no
cover_names:
- cover
- front
- art
- album
- folder
sources:
- filesystem
- coverart
- itunes
- amazon
- albumart
google_key: REDACTED
google_engine: 001442825323518660753:hrh5ch1gjzm
fanarttv_key: REDACTED
lastfm_key: REDACTED
store_source: no
high_resolution: no
deinterlace: no
cover_format:
pathfields: {}
album_fields: {}
bucket:
bucket_year: []
bucket_alpha: []
bucket_alpha_regex: {}
extrapolate: no
Problem
Running this command in verbose (
-vv
) mode:Led to this problem:
I've been using beets for years now. Recently I got a new laptop and installed the latest version of beets (not my homebrew fork) and every time I move files with beets, I run into the following problem: the laptop freezes, to the extent that I have to shut it down by pressing the power button until it dies, and then when restarting my laptop and mounting the external harddisk where my music and my database is on, I get an error message that the disk is not formatted correctly. I can repair it with the disk formatting tool of ubuntu, but it is very annoying and scary, as every time I get a warning that some of my data might be lost.
Setup
My configuration (output of
beet config
) is: