Support #764
Install Beets on FreeBSD
Description
This is a guide on how I setup beets on FreeBSD to tidy up my music library.
Prepare the Environment¶
- Make sure the system is up to date
pkg update && pkg upgrade
Install Beets¶
- Install Beets:
pkg install beets
- NOTE:
audio/beets
has many useful additions in its port package. I found ACOUSTICBRAINZ, BADFILES, CHROMA, DISCOGS, ECHONEST, EMBYUPDATE, FETCHART, FFMPEG, IMAGEMAGICK, LASTFM, LYRICS, and MPDSTATS to be useful:pkg install py27-discogs-client py27-setuptools27 py27-oauth2 py27-httplib2 py27-requests py27-mpd py27-mutagen py27-pyacoustid chromaprint cmake libarchive lzo2 cmake-modules py27-sphinx py27-Jinja2 py27-babel py27-pytz py27-MarkupSafe py27-docutils py27-pygments py27-pylast py27-unidecode py27-sqlite3 py27-enum34 py27-pyechonest py27-yaml ImageMagick-nox11 gmake libltdl pkgconf jbigkit jpeg lcms2 tiff libfpx liblqr-1 pcre libwmf-nox11 png openjpeg webp fftw3 ghostscript9-base autoconf autoconf-wrapper m4 help2man gmake-lite p5-Locale-gettext jbig2dec svgalib cups-image cups-client mDNSResponder gsfonts libpaper py27-munkres glib flac mp3val py27-mpd2 python27 py27-pathlib py27-xdg python2 portmaster audio/beets
- NOTE:
- Create a directory for the beets library metadata database:
mkdir ~/.beets
Using Beets¶
- Edit the config:
beet config -e
- And add the following to configure an existing music library:
directory: ~/music library: ~/.beets/musiclibrary.blb import: copy: no
- And add the following to configure an existing music library:
- Import the library to correct the music file tags:
beet import ~/music
- NOTE: For larger libraries, using the
-q
(quiet) flag. This will allow beets to update the music file metadata without asking for user input:beet import -q ~/music
- NOTE: For larger libraries, using the
- Adding more music later on can be done with the
-c
flag which will copy and correct music from~/some_great_album
folder to the~/music
folder:beet import -c ~/some_great_album
Plugins¶
FetchArt¶
The fetchart plugin retrieves album art images from various sources on the Web and stores them as image files.
- Edit the beets config file:
beet config -e
- And add the plugin definitions:
plugins: fetchart fetchart: auto: yes
- And add the plugin definitions:
- Then run the fetchart function:
beet fetchart
Lyrics¶
The lyrics plugin fetches and stores song lyrics from databases on the Web.
- Edit the beets config file:
beet config -e
- And add the plugin definitions:
plugins: lyrics lyrics: fallback: '' auto: yes
- And add the plugin definitions:
- Then run the lyrics function:
beet lyrics
EmbyUpdate¶
embyupdate is a plugin that lets you automatically update Emby‘s library whenever you change your beets library.
- Edit the beets config file:
beet config -e
- And add the plugin definitions:
plugins: embyupdate emby: host: localhost port: 8096 username: user password: password
- And add the plugin definitions:
EmbedArt¶
Typically, beets stores album art in a “file on the side”: along with each album, there is a file (named “cover.jpg” by default) that stores the album art. You might want to embed the album art directly into each file’s metadata. While this will take more space than the external-file approach, it is necessary for displaying album art in some media players (iPods, for example).
- Edit the beets config file:
beet config -e
- And add the plugin definitions:
plugins: embedart embedart: auto: yes remove_art_file: yes
- And add the plugin definitions:
- Then run the import function:
beet import
AcousticBrainz¶
The acousticbrainz plugin gets acoustic-analysis information from the AcousticBrainz project.
- Edit the beets config file:
beet config -e
- And add the plugin definitions:
plugins: acousticbrainz acousticbrainz: auto: yes
- And add the plugin definitions:
- Then run the import function:
beet import
Bad Files¶
The badfiles plugin adds a beet bad command to check for missing and corrupt files.
- Edit the beets config file:
beet config -e
- And add the plugin definitions:
plugins: badfiles badfiles: auto: yes
- And add the plugin definitions:
- Then run the bad function:
beet bad
Chromaprint¶
Acoustic fingerprinting is a technique for identifying songs from the way they “sound” rather from their existing metadata. That means that beets’ autotagger can theoretically use fingerprinting to tag files that don’t have any ID3 information at all (or have completely incorrect data). This plugin uses an open-source fingerprinting technology called Chromaprint and its associated Web service, called Acoustid.
Turning on fingerprinting can increase the accuracy of the autotagger—especially on files with very poor metadata—but it comes at a cost. First, it can be trickier to set up than beets itself (you need to set up the native fingerprinting library, whereas all of the beets core is written in pure Python). Also, fingerprinting takes significantly more CPU and memory than ordinary tagging—which means that imports will go substantially slower.
- Edit the beets config file:
beet config -e
- And add the plugin definitions:
plugins: chroma chroma: auto: yes
- And add the plugin definitions:
- Then run the import function:
beet import
Discogs¶
The discogs plugin extends the autotagger’s search capabilities to include matches from the Discogs database.
You will also need to register for a Discogs account. The first time you run the import command after enabling the plugin, it will ask you to authorize with Discogs by visiting the site in a browser. Subsequent runs will not require re-authorization.
- Edit the beets config file:
beet config -e
- And add the plugin definitions:
plugins: discogs discogs: auto: yes
- And add the plugin definitions:
- Then run the import function:
beet import
Duplicates¶
This plugin adds a new command, duplicates or dup, which finds and lists duplicate tracks or albums in your collection.
- Edit the beets config file:
beet config -e
- And add the plugin definitions:
plugins: duplicates
- And add the plugin definitions:
- Then run the duplicates function:
beet duplicates
Resources¶
Updated by Daniel Curtis almost 9 years ago
- Description updated (diff)
- Status changed from New to In Progress
- % Done changed from 0 to 30
Updated by Daniel Curtis almost 9 years ago
- Description updated (diff)
- % Done changed from 30 to 70
Updated by Daniel Curtis almost 9 years ago
- Description updated (diff)
- Status changed from In Progress to Resolved
- % Done changed from 70 to 100