beetbox / beets

music library manager and MusicBrainz tagger
http://beets.io/
MIT License
12.57k stars 1.8k forks source link

beet move crashes my laptop and breaks my external memory #5323

Open dosoe opened 1 week ago

dosoe commented 1 week ago

Problem

Running this command in verbose (-vv) mode:

$ beet -vv move

Led to this problem:

Laptop freezes, disk has formatting error

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:

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