Beets to manage library

Yes, I’ll get you a current config file. Might take me a while as I’m dealing with some elderly family member issues.

Hit me back up here or in PM Tuesday -Wednesday if I forget.

I’ve made some recent, minor, tweaks

1 Like

Awesome, thank you!

Here ya go @Dustin_Haning Hope this helps. Its a bit of a mess, but if you found me here you probably can make sense our of it. Check the comments and let me know if you have any questions. I’ve been using it for a few years now with the directory creation stuff unchanged. I like the way my directory structures are created. I also like the “extra” stuff that shows up below albums in Roon.

If you have problems copying from below, let me know and I can make a version available in Google Drive or similar. Please PM if we need to handle that.

plugins: fetchart embedart convert scrub replaygain lastgenre chroma web inline importadded discogs 

# directory: /data/_TestCombined
# directory: /data/asis
directory: /share/Music/BeetsPostProcessing # *** Remember to change this for HighRez, etc.
# directory: /share/Music/Standard
library: /config/musiclibrary.blb

art_filename: cover
threaded: yes
original_date: no
per_disc_numbering: yes
    
paths:
    default: $albumartist/$album ($original_year) - $format $bitdepth-$album_samplerate $media [$year $label $albumdisambig$catalognum]%aunique{}/%if{$multidisc,$disc-}$track - $title
    # default: $albumartist/$album%aunique{}/$track - $title
    singleton: Non-Album/%asciify{$year - $album ($label) $albumdisambig %aunique{albumdisambig}}/$track - %asciify{$title}
    comp: Various Artists/$album ($year $format $bitdepth-$album_samplerate $media) [$label $albumdisambig $catalognum] %aunique{}/%if{$multidisc,$disc-}$track - $title ($artist)
    albumtype:soundtrack: Soundtracks/$album ($year $format $bitdepth-$album_samplerate $media) [$label $albumdisambig $catalognum] %aunique{}/%if{$multidisc,$disc-}$track - $title ($artist)

# Inline plugin template
item_fields:
  multidisc: 1 if disctotal > 1 else 0
  my_samplerate: round(samplerate / 1000)
  #my_samplerate: str(int(samplerate / 1000))
  is_flac: 1 if format == "FLAC" else 0
album_fields:  
  format: |
       formatList = []
       for item in items:
           formatList.append(item.format)
       return formatList
  av_bitrate: |
       total = 0
       for item in items:
           total += item.bitrate
       return round(total / len(items) / 1000)
  album_bitdepth:  |
       total = 0
       for item in items:
           total += item.bitdepth
       return round(total / len(items))
  album_samplerate:  |
       maxsamplerate = 0
       for item in items:
            if item.samplerate > maxsamplerate:
                 maxsamplerate = item.samplerate
       return round(maxsamplerate / 1000)
       #total = 0
       #for item in items:
       #    total += item.samplerate
       #return round(total / len(items) / 1000)
       #return str(int(total / len(items) / 1000))
  is_1644: |
       bd = 0
       sr = 0
       br = 0
       for item in items:
           bd += item.bitdepth
           sr += item.samplerate
           br += item.bitrate
       bd = round(bd / len(items))
       sr = round(sr / len(items) / 1000)
       br = round(br / len(items) / 1000)
       return 1 if bd == 16 and sr == 44 and br > 320 else 0
  display_year: |
       if original_year != year:
          return str(year) + '(' + str(original_year) + ')'
       else:
          return str(year)
        
import:
    quiet: no #Testing this come back to it!!!
    write: yes #Writes tags to files/tracks
    copy: yes
    move: yes
    delete: no # Be careful!!!
    resume: ask
    incremental: no
    quiet_fallback: skip
    # quiet_fallback: asis
    # timid: yes #no is default always ask no matter the percentage match
    log: /config/beet.log
    duplicate_action: keep #“remove” means remove **old** item
    # duplicate_action: remove #“remove” means remove **old** item
    #incremental_skip_later: no
    from_scratch: yes

importadded:
    preserve_mtimes: yes  # After importing files, re-set their mtimes to their original value. Default: no.
    preserve_write_mtimes: yes # After writing files, re-set their mtimes to their original value. Default: no.

#match:
#    #strong_rec_thresh: 0.10      # shold be 95% acordign to docs 0.10 = 90%
#    strong_rec_thresh: 0.15
#    preferred:
#        countries: ['US', 'JP', 'GB|UK']
#        media: ['CD', 'Digital Media|File'] # Use CD fist processing standard rez and Digital Media first for HighRe
#        #media: ['Digital Media|File', 'CD']
#        original_year: no
#    ignored: missing_tracks

match:
    strong_rec_thresh: 0.10
    #medium_rec_thresh: 0.25
    #rec_gap_thresh: 0.25
    #max_rec:
    #    missing_tracks: low
    #    unmatched_tracks: low
    distance_weights:
        source: 2.0
        artist: 3.0
        album: 3.0
        #media: 1.0
        media: 0.5
        # mediums: 1.0
        mediums: 0.0
        year: 1.0
        country: 0.5
        label: 0.5
        catalognum: 0.1
        albumdisambig: 0.1
        album_id: 5.0
        tracks: 2.0
        missing_tracks: 0.9
        unmatched_tracks: 0.1
        track_title: 2.0
        track_artist: 2.0
        track_index: 0.3
        track_length: 2.0
        track_id: 0.3
    preferred:
        countries: ['US', 'XE', 'JP', 'GB|UK']
        media: ['CD', 'SACD', 'Digital Media|File'] # Use CD fist processing standard rez and Digital Media first for HighRe
#        #media: ['Digital Media|File', 'CD']
        original_year: no
#    ignored: missing_tracks

musicbrainz:
     extra_tags: [year, country, media]

# files matching these patterns are deleted from source after import
clutter: ["Thumbs.DB", ".DS_Store", "*.m3u", ".pls", "*.jpg", "*.pdf", "*.log", "*.png"]

lastgenre:
    auto: yes
    source: album
    count: 3

embedart:
    auto: yes

fetchart:
    auto: yes
    
replaygain:
    auto: no

scrub:
    auto: yes

replace:
    '^\.': _
    '[\x00-\x1f]': '' #was underscore originally
    '[<>:"\?\*\|]': '' #was underscore originally
    '[\xE8-\xEB]': e
    '[\xEC-\xEF]': i
    '[\xE2-\xE6]': a
    '[\xF2-\xF6]': o
    '[\xF8]': o
    '\.$': ''
    '\s+$': '' #was underscore originally

#path_sep_replace: _

asciify_paths: yes

web:
    host: 0.0.0.0
    port: 8337

discogs:
    index_tracks: no






Awesome! Thank you so much!

1 Like

Happy to help