***** Beets ***** http://beets.readthedocs.org/en/v1.3.13/ I have an extensive collection to import into beets. I also did some things wrong in the beginning which resulted in various errors. Here is my current workflow. Given: - old collection in ``~/x/`` - new collection in ``~/music/`` Paths should be ``genre/artist/year - album/track - title``. Here is the config:: directory: ~/music asciify_paths: True plugins: chroma discogs duplicates info fromfilename format_item: $artist - $album - $track - $title import: copy: no move: no write: no paths: default: %lower{$genre}/$albumartist/%if{year,$year - }$album%aunique{}/$track - $title singleton: singles/%if{year,$year - }$album/$artist - $title comp: %lower{$genre}/0-various-artists/%if{year,$year - }$album%aunique{}/$track - $title Note that I do not copy, move or write on import. This is essential. I import per genre. Here is an example for importing funk:: beet import ~/x/Funk # decide when prompted # use another terminal to "beet info {somefile}" # use browser to find weird stuff on musicbrains or discogs # do some manual tagging here # usually i disagree with the genres ;) beet move # to actually move the files from ~/x to ~/music beet fingerprint # i believe fingerprinting to be a great idea beet write # write library info to the individual files Import, fix genre, and reorganize files:: beet import foo beet ls -f '$format $genre $path' fooquery beet ls fooquery genre:wrong beet modify fooquery genre:wrong genre=right beet import --noautotag -L fooquery Grep for stuff and remove it (easy :>):: beet ls -p fooquery | grep 'EXCLUDEME' | xargs --delimiter "\n" --replace printf "path:{}\0" | xargs -0 -L1 --replace beet remove -f '{}'