automate/020_beets.sh

3006 lines
75 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
DEST=${1:-/etc/skel}
sudo apt-get install -y \
beets \
mopidy-beets \
python3-dev \
python3-pip \
python3-gi \
libchromaprint-tools \
imagemagick \
mp3val \
flac \
lame \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gir1.2-gstreamer-1.0 \
libxml2-dev \
libxslt1-dev \
zlib1g-dev \
unrar
# plugin deps
sudo apt install -y \
python3-yaml \
python3-requests \
python3-pylast \
python3-discogs-client \
python3-rarfile \
python3-acoustid \
python3-bs4 \
python3-isodate \
python3-lxml
# install zsh completions - already in the package
# /usr/share/zsh/vendor-completions/_beet
# add the configuration file
# beets: /usr/share/beets/beets/config_default.yaml
conf_print_beets_local_conf() {
cat <<-EOF
# Edit this file to fit your system.
# directory: /mnt/internal/music # Destination.
# library: /mnt/internal/music/library.db # Database
directory: ${HOME}/Music # Destination.
library: ${HOME}/.config/beets/library.db # Database
#pluginpath:
#- ${HOME}/.config/beets/beetsplug/fetchartist # https://github.com/dkanada/beets-fetchartist
#- ${HOME}/.config/beets/beetsplug/discogs_extradata
EOF
}
conf_print_beets_local_conf | tee ~/.config/beets/local.yaml >/dev/null
mkdir -p ${DEST}/.config/beets/beetsplug
conf_print_beets_secrets_sample() {
cat <<-EOF
acoustid:
apikey: your_api_key
discogs_extradata:
token: usertoken
fetchart:
fanarttv_key: your_api_key
follow:
email: your_email
password: seekrit
userid: your_user_id
lastfm:
user: you
api_key: your_api_key
mbcollection:
collection: your_collection_id
musicbrainz:
user: you
pass: seekrit
EOF
}
conf_print_beets_secrets_sample | tee ${DEST}/.config/beets/secrets.yaml >/dev/null
conf_print_beets_conf_1() {
cat <<EOF
###################################################################################################
# Global Options ##################################################################################
include: # A list of extra configuration files to include.
# IMPORTANT: Most configurations doesn't seem to work in external files, so leave them here.
- local.yaml # Edit paths to your needs.
- secrets.yaml # Secret strings (REDUCTED) like usernames and passwords. Add this file to git.ignore.
- plugins.yaml # Activate/deactivate plugins here.
original_date: yes # Use the original date for the release.
per_disc_numbering: yes # The track numbers are incremented throughout a multi disk release.
threaded: yes # Indicating whether the autotagger should use multiple threads.
# This makes things substantially faster by overlapping work.
parentwork: # This plugin adds five tags:
# - parentwork: The title of the parent work.
# - mb_parentworkid: The musicbrainz id of the parent work.
# - parentwork_disambig: The disambiguation of the parent work title.
# - parent_composer: The composer of the parent work.
# - parent_composer_sort: The sort name of the parent work composer.
# - work_date: The composition date of the work, or the first parent work that has a composition date. Format: yyyy-mm-dd.
force: no # As a default, parentwork only fetches work info for recordings that do not already have a parentwork tag.
# If force is enabled, it fetches it for all recordings. Default: no.
auto: yes # If enabled, automatically fetches works at import.
# It takes quite some time, because beets is restricted to one musicbrainz query per second. Default: no.
###################################################################################################
EOF
}
conf_print_beets_conf_1 | tee ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_3() {
cat <<EOF
# Import ##########################################################################################
import: # Beets can move or copy files but it doesnt make sense to do both).
write: yes # Controlling whether metadata (e.g., ID3) tags are written to files when using beet import.
#copy: yes # Keep your current directory structure.
# The option is ignored if move is enabled (i.e., beets can move or copy files but it doesnt make sense to do both).
move: yes # Move the files. Otherwise there will be duplicates.
resume: yes # Controls whether interrupted imports should be resumed.
# “Yes” means that imports are always resumed when possible;
# “no” means resuming is disabled entirely;
# “ask” (the default) means that the user should be prompted when resuming is possible.
incremental: no # Don't record imported directories.
incremental_skip_later: no # Controlling whether imported directories are recorded and whether these recorded directories are skipped.
from_scratch: no # Controlling whether existing metadata is discarded when a match is applied.
quiet_fallback: skip # Either skip (default) or asis, specifying what should happen in quiet mode when there is no strong recommendation.
none_rec_action: ask # Either ask (default), asis or skip.
# Specifies what should happen during an interactive import session when there is no recommendation.
# Useful when you are only interested in processing medium and strong recommendations interactively.
timid: no # Controlling whether the importer runs in timid mode,
# in which it asks for confirmation on every autotagging match, even the ones that seem very close.
log: /mnt/internal/music/import.log
default_action: apply # One of apply, skip, asis, or none, indicating which option should be the default when selecting an action for a given match.
# This is the action that will be taken when you type return without an option letter.
languages: en de # Prefer transliterated English names.
detail: no # Whether the importer UI should show detailed information about each match it finds.
# When enabled, this mode prints out the title of every track, regardless of whether it matches the original metadata.
# The default behavior only shows changes. Default: no.
group_albums: no # By default, the beets importer groups tracks into albums based on the directories they reside in.
# This option instead uses files metadata to partition albums.
# Enable this option if you have directories that contain tracks from many albums mixed together.
autotag: yes # If most of your collection consists of obscure music,
# you may be interested in disabling autotagging by setting this option to no.
duplicate_action: ask # Either skip, keep, remove, merge or ask. Controls how duplicates are treated in import task.
# “skip” means that new item (album or track) will be skipped;
# “keep” means keep both old and new items;
# “remove” means remove old item;
# “merge” means merge into one album;
# “ask” means the user should be prompted for the action each time.
bell: yes # Ring the terminal bell to get your attention when the importer needs your input.
importadded:
preserve_mtimes: no # After importing files, re-set their mtimes to their original value. Default: no.
preserve_write_mtimes: no # After writing files, re-set their mtimes to their original value. Default: no.
###################################################################################################
EOF
}
conf_print_beets_conf_3 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_4() {
cat <<EOF
# AcousticBrainz ##################################################################################
absubmit: # The absubmit plugin lets you submit acoustic analysis results to the AcousticBrainz server.
auto: yes # Analyze every file on import. Otherwise, you need to use the beet absubmit command explicitly. Default: no
force: no # Analyze items and submit of AcousticBrainz data even for tracks that already have it. Default: no.
pretend: no # Do not analyze and submit of AcousticBrainz data but print out the items which would be processed. Default: no.
acoustid:
apikey: REDACTED # Command: beet submit
chroma: # Turning on fingerprinting can increase the accuracy of the autotagger - especially on files with very poor metadata.
# The Acoustid plugin extends the autotagger to use acoustic fingerprinting to find information for arbitrary audio.
# Install that plugin if youre willing to spend a little more CPU power to get tags for unidentified albums.
# (But be aware that it does slow down the process.)
auto: yes # Fingerprint-based autotagging.
acousticbrainz: # The acousticbrainz plugin gets acoustic-analysis information from the AcousticBrainz project.
auto: yes # Enable AcousticBrainz during beet import. Default: yes.
force: yes # Download AcousticBrainz data even for tracks that already have it. Default: no.
tags: # Which tags from the list above to set on your files. Default: [] (all).
[ # As far as I know, the following tags couldn't be read by Roon.
average_loudness,
bpm, # ToDo: Mostly zero.
chords_changes_rate,
chords_key,
chords_number_rate,
chords_scale,
danceable,
gender,
genre_rosamerica,
initial_key, # This is a built-in beets field, which can also be provided by Key Finder Plugin.
key_strength,
mood_acoustic,
mood_aggressive,
mood_electronic,
mood_happy,
mood_party,
mood_relaxed,
mood_sad,
moods_mirex,
rhythm,
timbre,
tonal,
voice_instrumental
]
###################################################################################################
EOF
}
conf_print_beets_conf_4 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_5() {
cat <<EOF
# MusicBrainz #####################################################################################
musicbrainz:
user: REDACTED
pass: REDACTED
searchlimit: 20 # Recommendation from: https://github.com/kernitus/beets-oldestdate
extra_tags: # Enable improved MediaBrainz queries from tags.
[
catalognum,
country,
label,
media,
year
]
match:
preferred:
media: ['Digital Media|File', 'Digital Media'] # Priorize digital media.
countries: ['DE', 'XW', 'US', 'GB|UK']
strong_rec_thresh: 0.75 # Reflects the distance threshold below which beets will make a “strong recommendation” that the metadata be used.
# Strong recommendations are accepted automatically (except in “timid” mode),
# so you can use this to make beets ask your opinion more or less often.
# The threshold is a distance value between 0.0 and 1.0, so you can think of it as the opposite of a similarity value.
# For example, if you want to automatically accept any matches above 90% similarity, use: "strong_rec_thresh: 0.10"
# The default strong recommendation threshold is 0.04.
# When a match is below the medium recommendation threshold
# or the distance between it and the next-best match is above the gap threshold,
# the importer will suggest that match but not automatically confirm it.
# Otherwise, youll see a list of options to choose from.
medium_rec_thresh: 0.125 # The medium_rec_thresh and rec_gap_thresh options work similarly.
mbcollection:
auto: yes # Automatically amend your MusicBrainz collection whenever you import a new album.
collection: REDACTED # Which MusicBrainz collection to update. Use the ID from the URL instead of the name.
remove: yes # Remove albums from collections which are no longer present in the beets database.
# ToDo: remove doesn't work.
mbsubmit: # As MusicBrainz currently does not support submitting albums programmatically,
# the recommended workflow is to copy the output of the Print tracks choice and
# paste it into the parser that can be found by clicking on the “Track Parser” button on MusicBrainz “Tracklist” tab.
format: \$track. \$title - \$artist (\$length)
# The format used for printing the tracks, defined using the same template syntax as beets path formats.
# Default: \$track. \$title - \$artist (\$length).
threshold: medium # The minimum strength of the autotagger recommendation that will cause the Print tracks choice to be displayed on the prompt.
# Default: medium (causing the choice to be displayed for all albums that have a recommendation of medium strength or lower).
# Valid values: none, low, medium, strong.
###################################################################################################
EOF
}
conf_print_beets_conf_5 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_6() {
cat <<EOF
# Bandcamp ########################################################################################
# beetcamp
bandcamp: # Beetcamp. Uses the bandcamp URL as id (for both albums and songs).
# If no matching release is found when importing you can select enter Id and paste the bandcamp URL.
preferred_media: Digital # A comma-separated list of media to prioritise when fetching albums.
include_digital_only_tracks: true
# For media that isn't Digital Media, include all tracks,
# even if their titles contain digital only (or alike).
search_max: 10 # Maximum number of items to fetch through search queries. Default: 10.
art: true # Add a source to the FetchArt plug-in to download album art for Bandcamp albums
# (requires FetchArt plug-in enabled).
#exclude_extra_fields: # The data that is added after the core auto tagging process is considered extra:
#- lyrics # (currently) lyrics and comments (release description) fields.
#- comments # Since there yet isn't an easy way to preview them before they get applied,
# you can ignore them if you find them irrelevant or inaccurate.
###################################################################################################
# Last.fm #########################################################################################
lastimport:
per_page: 500 # The number of tracks to request from the API at once. Default: 500.
retry_limit: 3 # How many times should we re-send requests to Last.fm on failure? Default: 3.
lastfm:
user: REDACTED
api_key: REDACTED
types:
play_count: int
rating: float
lastgenre: # Fetches tags from Last.fm and assigns them as genres to your albums and items.
auto: yes # Fetch genres automatically during import. Default: yes.
canonical: ~/.config/beets/genres/genres-tree.yaml
# Use a canonicalization tree. Setting this to yes will use a built-in tree.
whitelist: ~/.config/beets/genres/genres.txt
# The filename of a custom genre list, yes to use the internal whitelist, or no to consider all genres valid.
# Default: yes.
count: 5 # Number of genres to fetch. Default: 1
fallback: 'Pop/Rock' # A string if to use a fallback genre when no genre is found.
# You can use the empty string '' to reset the genre.
# Default: None.
separator: '; '
force: no # By default, beets will always fetch new genres, even if the files already have one.
# To instead leave genres in place in when they pass the #whitelist: ~/.config/beets/genres.txt,
# set the force option to no.
min_weight: 10 # Minimum popularity factor below which genres are discarded. Default: 10.
prefer_specific: no # Sort genres by the most to least specific, rather than most to least popular. Default: no.
source: track # Which entity to look up in Last.fm. Can be either artist, album or track. Default: album.
title_case: yes # Convert the new tags to TitleCase before saving. Default: yes.
###################################################################################################
EOF
}
conf_print_beets_conf_6 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_6() {
cat <<EOF
# Muspy ###########################################################################################
follow: # Get notifications about new releases from album artists in your Beets library using muspy.
email: REDACTED
password: REDACTED
userid: REDACTED
auto: yes
###################################################################################################
# Lyrics ##########################################################################################
lyrics:
auto: yes # Fetch lyrics automatically during import. Default: yes.
fallback: '' # By default, the file will be left unchanged when no lyrics are found.
# Use the empty string '' to reset the lyrics in such a case.
# Default: None.
force: no # By default, beets wont fetch lyrics if the files already have ones.
# To instead always fetch lyrics, set the force option to yes.
# Default: no.
#google_API_key: None # Your Google API key (to enable the Google Custom Search backend).
# Default: None.
#google_engine_ID: # The custom search engine to use.
# Default: The beets custom search engine, which gathers an updated list of sources known to be scrapeable.
sources: # List of sources to search for lyrics.
# An asterisk * expands to all available sources.
# Both it and the genius source will only be enabled if BeautifulSoup is installed.
- bandcamp # ToDo: Not shure if this entry is really nescessary.
- genius
- lyricwiki
- google # The google source will be automatically deactivated if no google_API_key is setup.
- musixmatch # Possibly just 30% of a whole song text
# Leave in last position or comment it out.
# @test
###################################################################################################
EOF
}
conf_print_beets_conf_6 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_7() {
cat <<EOF
# Pictures ########################################################################################
# In Roon, all the images embedded in the file tags, are stored next to the audio files or
# stored in a folder called artwork or scans next to the files are displayed.
# This includes all images that include cover, front or folder.
art_filename: cover # When importing album art, the name of the file (without extension) where the cover art image should be placed.
# This is a template string, so you can use any of the syntax available to Path Formats.
copyartifacts:
extensions: .jpg .pdf .png
print_ignored: yes
fetchart:
auto: yes # Enable automatic album art fetching during import.
cautious: no # Pick only trusted album art by ignoring filenames that do not contain one of the keywords in "cover_names".
enforce_ratio: yes # Only allow images with 1:1 aspect ratio
minwidth: 1000 # Only images with a width bigger or equal to minwidth are considered as valid album art candidates.
maxwidth: 3000 # A maximum image width to downscale fetched images if they are too big.
# The height is recomputed so that the aspect ratio is preserved.
sources: # An asterisk * expands to all available sources.
- filesystem # No remote art sources are queried if local art is found in the filesystem.
- coverart
- albumart
- fanarttv
- bandcamp
fanarttv_key: REDACTED # API key to use for the fanart API.
store_source: yes # Store the art source (e.g. filesystem) in the beets database as art_source.
embedart:
auto: no # Enable automatic album art embedding.
compare_threshold: 50 # A threshold of 0 (the default) disables similarity checking and always embeds new images.
# Recommended between 10 and 100.
# The smaller the threshold number, the more similar the images must be.
ifempty: yes # Avoid embedding album art for files that already have art embedded.
maxwidth: 0 # A maximum width to downscale images before embedding them (the original image file is not altered).
# The resize operation reduces image width to at most maxwidth pixels.
# The height is recomputed so that the aspect ratio is preserved. See also Image Resizing for further caveats about image resizing.
remove_art_file: no # Automatically remove the album art file for the album after it has been embedded.
# This option is best used alongside the FetchArt plugin to download art with the purpose
# of directly embedding it into the files metadata without an “intermediate” album art file.
###################################################################################################
EOF
}
conf_print_beets_conf_7 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_8() {
cat <<EOF
# ReplayGain ######################################################################################
replaygain:
auto: yes # Enable ReplayGain analysis during import. Default: yes.
# ReplayGain analysis is not fast, so you may want to disable it during import.
backend: ffmpeg # The analysis backend; either gstreamer, command, or audiotools. Default: command.
overwrite: no # Re-analyze files that already have ReplayGain tags. Default: no.
targetlevel: 89 # A number of decibels for the target loudness level. Default: 89.
per_disc: no # Calculate album ReplayGain on disc level instead of album level. Default: no.
###################################################################################################
EOF
}
conf_print_beets_conf_8 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_9() {
cat <<EOF
# Maintanance #####################################################################################
duplicates:
album: no # List duplicate albums instead of tracks. Default: no.
checksum: ffmpeg -i {file} -f crc -
# Use an arbitrary command to compute a checksum of items.
# This overrides the keys option the first time it is run;
# however, because it caches the resulting checksum as flexattrs in the database,
# you can use --key=name_of_the_checksumming_program --key=any_other_keys
# (or set the keys configuration option) the second time around.
# Default: ffmpeg -i {file} -f crc -.
copy: none # A destination base directory into which to copy matched items.
# Default: none (disabled).
count: yes # Print a count of duplicate tracks or albums in the format
# \$albumartist - \$album - \$title: \$count (for tracks)
# or
# \$albumartist - \$album: \$count (for albums).
# Default: no.
delete: no # Removes matched items from the library and from the disk. Default: no
format: format_item # A specific format with which to print every track or album.
# This uses the same template syntax as beets path formats.
# The usage is inspired by, and therefore similar to, the list command.
# Default: format_item
full: yes # List every track or album that has duplicates, not just the duplicates themselves. Default: no
keys: [mb_trackid, mb_albumid]
# Define in which track or album fields duplicates are to be searched.
# By default, the plugin uses the musicbrainz track and album IDs for this purpose.
# Using the keys option (as a YAML list in the configuration file,
# or as space-delimited strings in the command-line),
# you can extend this behavior to consider other attributes.
# Default: [mb_trackid, mb_albumid]
merge: no # Merge duplicate items by consolidating tracks and/or metadata where possible.
move: none # A destination base directory into which it will move matched items. Default: none (disabled).
path: no # Output the path instead of metadata when listing duplicates. Default: no.
strict: no # Do not report duplicate matches if some of the attributes are not defined (ie. null or empty). Default: no
#tag: no # A key=value pair.
# The plugin will add a new key attribute with value value as a flexattr to the database for duplicate items. Default: no.
tiebreak: {} # Dictionary of lists of attributes keyed by items or albums to use when choosing duplicates.
# By default, the tie-breaking procedure favors the most complete metadata attribute set.
# If you would like to consider the lower bitrates as duplicates, for example, set tiebreak: items: [bitrate].
# Default: {}.
check:
import: yes # Add checksums for new files during the import process.
# This also disables integrity checks on import and will not ask you to skip the import of corrupted files.
write-check: yes # Verify checksums before writing files with beet write or beet modify.
write-update: yes # Update checksums after writing files with beet write or beet modify.
convert-update: no # Update the checksum if a file has been converted with the --keep-new flag.
threads: 1 # Threads to compute checksums.
missing:
#format: \$albumartist - \$album - \$title
# A specific format with which to print every track.
# This uses the same template syntax as beets path formats.
# The usage is inspired by, and therefore similar to, the list command.
# Default: format_item.
count: yes # Print a count of missing tracks per album, with format defaulting to \$albumartist - \$album: \$missing.
# Default: no.
total: yes # Print a single count of missing tracks in all albums.
# Default: no.
EOF
}
conf_print_beets_conf_9 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_10() {
cat <<EOF
###################################################################################################
# Export ##########################################################################################
convert: # By default, the command places converted files into the destination directory and leaves your library pristine.
auto: no # Import transcoded versions of your files automatically during imports.
command: ffmpeg -i \$source -sample_fmt s16 -ar 44100 \$dest
extension: flac
source: /mnt/external/work/roon-export
dest: /mnt/external/work/converted
# The directory where the files will be converted (or copied) to. Default: none.
# With this option enabled, the importer will transcode all (in the default configuration) non-MP3 files
# over the maximum bitrate before adding them to your library.
#tmpdir: none # The directory where temporary files will be stored during import. Default: none (system default),
copy_album_art: no # Since the covers are embedded in the files when Roon exports them, this configuration is not necessary.
embed: no # Embed album art in converted items. Default: yes.
#id3v23: inherit # Can be used to override the global id3v23 option. Default: inherit.
never_convert_lossy_files: yes
# Cross-conversions between lossy codecs—such as mp3, ogg vorbis, etc.
# Makes little sense as they will decrease quality even further.
# If set to yes, lossy files are always copied.
quiet: false # Prevent the plugin from announcing every file it processes.
# Default: false.
threads: 1 # The number of threads to use for parallel encoding.
# By default, the plugin will detect the number of processors available and use them all.
permissions: # octal modes # Maybe nescessary for smb shares like ROCK or NAS drives.
file: 777
dir: 777
EOF
}
conf_print_beets_conf_10 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_11() {
cat <<EOF
###################################################################################################
# UI ##############################################################################################
verbose: no
ui:
color: yes
colors:
text_success: green
text_warning: blue
text_error: red
text_highlight: blue
text_highlight_minor: lightgray
action_default: darkblue
action: purple
hook:
hooks:
#############################################
- event: album_imported
command: echo "\"{album}\""
- event: import
command: echo "imported from {paths}"
#############################################
- event: art_set
command: echo "Coverart saved"
- event: import_begin
command: echo "Roon import started..."
- event: import_task_apply
command: echo "Metadata applied"
- event: item_copied
command: echo "\"{item}\" copied from \"{source}\" to \"{destination}\""
- event: item_moved
command: echo "Moved \"{item}\""
- event: write
command: echo "Writing to {path}"
- event: cli_exit
command: echo "All tasks finished!"
EOF
}
conf_print_beets_conf_11 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_conf_2() {
cat <<EOF
###################################################################################################
# Paths ###########################################################################################
asciify_path: yes # Convert all non-ASCII characters in paths to ASCII equivalents.
clutter: # When beets imports all the files in a directory, it tries to remove the directory if its empty.
# A directory is considered empty if it only contains files whose names match the glob patterns in clutter,
# which should be a list of strings.
# The importer only removes recursively searched subdirectories—the top-level directory you specify on the command line is never deleted.
[
.DS_Store, # Default.
Thumbs.DB # Default.
]
bucket:
bucket_alpha_regex:
[A-Z] # Create folders with the first letters of the band names.
paths: # Directory and naming scheme.
# The aunique{} function ensures that identically-named albums are placed in different directories.
default: %bucket{\$artist,alpha}/\$albumartist/\$album%aunique{}/\$track \$title
singleton: %bucket{\$artist,alpha}/\$artist/Non-Album/\$title
albumtype:soundtrack: Soundtracks/\$album%aunique{}/\$track \$title
comp: Compilations/\$album%aunique{}/\$track \$title
# copyartifacts ###############################
ext:jpg: \$albumpath/scans/cover
ext:png: \$albumpath/scans/cover
ext:pdf: \$albumpath/scans/booklet
###############################################
max_filename_length: 255 # 0 = unlimited.
##################################################################################################
EOF
}
conf_print_beets_conf_2 | tee -a ${DEST}/.config/beets/config.yaml >/dev/null
conf_print_beets_plugins_conf() {
cat <<-EOF
# List of useful plugins.
# Commented out (#) plugins are not in use yet.
plugins:
[
#absubmit, # Lets you submit acoustic analysis results to the AcousticBrainz server.
# ToDo: install the extractor binary from https://acousticbrainz.org/download
acousticbrainz, # Gets acoustic-analysis information from the AcousticBrainz project.
badfiles, # ToDo. Adds a beet bad command to check for missing and corrupt files.
bandcamp, # Beetcamp. Use bandcamp as an autotagger source for eg. artwork and lyrics.
bucket, # Groups your files into buckets folders representing ranges.
chroma, # Chromaprint/Acoustid Plugin.
check, # Add checksum automatically.
convert, # Lets you transcoding audio and embedding album art.
copyartifacts, # A plugin that moves non-music files during the import process.
duplicates, # Adds a new command, duplicates or dup, which finds and lists duplicate tracks or albums in your collection.
edit, # Lets you modify music metadata using your favorite text editor. ToDo: No config file yet.
embedart, # Embed the album art directly into each files metadata.
export, # Lets you get data from the items and export the content as JSON, CSV, or XML.
fetchart, # Retrieves album art images from various sources on the Web and stores them as image files.
follow, # Get notifications about new releases from album artists in your Beets library using muspy.
fromfilename, # The FromFilename plugin adds the ability to guess tags from the filenames.
# Use this plugin if your tracks have useful names (like “03 Call Me Maybe.mp3”) but their tags dont reflect that.
hook, # Lets you run commands in response to these events.
importadded, # Useful when an existing collection is imported and the time when albums and items were added should be preserved.
info, # The info plugin provides a command that dumps the current tag values for any file format supported by beets.
lastimport, # Doesn't write tags to files - only database. So not useful at the moment.
lastgenre, # Fetches tags from Last.fm and assigns them as genres to your albums and items.
lyrics, # Fetches and stores song lyrics from databases on the Web.
mbcollection, # Lets you submit your catalog to MusicBrainz to maintain your music collection list there.
mbsubmit, # Provides an extra prompt choice during an import session that prints the tracks
# of the current album in a format that is parseable by MusicBrainzs track parser.
mbsync, # This plugin provides the mbsync command,
# which lets you fetch metadata from MusicBrainz for albums and tracks that already have MusicBrainz IDs.
missing, # This plugin adds a new command, missing or miss,
# which finds and lists, for every album in your collection, which or how many tracks are missing.
parentwork, # Fetches the work title, parent work title and parent work composer from MusicBrainz.
permissions, # Set file permissions for imported music files and its directories. Permissions will be adjusted automatically on import.
replaygain, # This plugin adds support for ReplayGain, a technique for normalizing audio playback levels.
unimported # Allows to list all files in the library folder which are not listed in the beets library database, including art files.
]
EOF
}
conf_print_beets_plugins_conf | tee ${DEST}/.config/beets/plugins.yaml >/dev/null
mkdir -p ${DEST}/.config/beets/genres
conf_print_beets_genres_txt() {
cat <<-EOF
2 tone
2-step garage
4-beat
4x4 garage
8-bit
acapella
acid
acid breaks
acid house
acid jazz
acid rock
acoustic music
acousticana
adult contemporary music
african popular music
african rumba
afrobeat
aleatoric music
alternative country
alternative dance
alternative hip hop
alternative metal
alternative rock
ambient
ambient house
ambient music
americana
anarcho punk
anti-folk
apala
ape haters
arab pop
arabesque
arabic pop
argentine rock
ars antiqua
ars nova
art punk
art rock
ashiq
asian american jazz
australian country music
australian hip hop
australian pub rock
austropop
avant-garde
avant-garde jazz
avant-garde metal
avant-garde music
axé
bac-bal
bachata
baggy
baila
baile funk
baisha xiyue
baithak gana
baião
bajourou
bakersfield sound
bakou
bakshy
bal-musette
balakadri
balinese gamelan
balkan pop
ballad
ballata
ballet
bamboo band
bambuco
banda
bangsawan
bantowbol
barbershop music
barndance
baroque
baroque music
baroque pop
bass music
batcave
batucada
batuco
batá-rumba
beach music
beat
beatboxing
beautiful music
bebop
beiguan
bel canto
bend-skin
benga
berlin school of electronic music
bhajan
bhangra
bhangra-wine
bhangragga
bhangramuffin
big band
big band music
big beat
biguine
bihu
bikutsi
biomusic
bitcore
bitpop
black metal
blackened death metal
blue-eyed soul
bluegrass
blues
blues ballad
blues-rock
boogie
boogie woogie
boogie-woogie
bossa nova
brass band
brazilian funk
brazilian jazz
breakbeat
breakbeat hardcore
breakcore
breton music
brill building pop
britfunk
british blues
british invasion
britpop
broken beat
brown-eyed soul
brukdown
brutal death metal
bubblegum dance
bubblegum pop
bulerias
bumba-meu-boi
bunraku
burger-highlife
burgundian school
byzantine chant
ca din tulnic
ca pe lunca
ca trù
cabaret
cadence
cadence rampa
cadence-lypso
café-aman
cai luong
cajun music
cakewalk
calenda
calentanos
calgia
calypso
calypso jazz
calypso-style baila
campursari
canatronic
candombe
canon
canrock
cantata
cante chico
cante jondo
canterbury scene
cantiga
cantique
cantiñas
canto livre
canto nuevo
canto popular
cantopop
canzone napoletana
cape jazz
capoeira music
caracoles
carceleras
cardas
cardiowave
carimbó
cariso
carnatic music
carol
cartageneras
cassette culture
casséy-co
cavacha
caveman
caña
celempungan
cello rock
celtic
celtic fusion
celtic metal
celtic punk
celtic reggae
celtic rock
cha-cha-cha
chakacha
chalga
chamamé
chamber jazz
chamber music
chamber pop
champeta
changuí
chanson
chant
charanga
charanga-vallenata
charikawi
chastushki
chau van
chemical breaks
chicago blues
chicago house
chicago soul
chicano rap
chicha
chicken scratch
children's music
chillout
chillwave
chimurenga
chinese music
chinese pop
chinese rock
chip music
cho-kantrum
chongak
chopera
chorinho
choro
chouval bwa
chowtal
christian alternative
christian black metal
christian electronic music
christian hardcore
christian hip hop
christian industrial
christian metal
christian music
christian punk
christian r&b
christian rock
christian ska
christmas carol
christmas music
chumba
chut-kai-pang
chutney
chutney soca
chutney-bhangra
chutney-hip hop
chutney-soca
chylandyk
chzalni
chèo
cigányzene
classic
classic country
classic female blues
classic rock
classical
classical music
classical music era
clicks n cuts
close harmony
club music
cocobale
coimbra fado
coladeira
colombianas
combined rhythm
comedy
comedy rap
comedy rock
comic opera
comparsa
compas direct
compas meringue
concert overture
concerto
concerto grosso
congo
conjunto
contemporary christian
contemporary christian music
contemporary classical
contemporary r&b
contonbley
contradanza
cool jazz
corrido
corsican polyphonic song
cothoza mfana
country
country blues
country gospel
country music
country pop
country r&b
country rock
country-rap
countrypolitan
couple de sonneurs
coupé-décalé
cowpunk
cretan music
crossover jazz
crossover music
crossover thrash
crossover thrash metal
crunk
crunk&b
crunkcore
crust punk
csárdás
cuarteto
cuban rumba
cuddlecore
cueca
cumbia
cumbia villera
cybergrind
dabka
dadra
daina
dalauna
dance
dance music
dance-pop
dance-punk
dance-rock
dancehall
dangdut
danger music
dansband
danza
danzón
dark ambient
dark cabaret
dark pop
darkcore
darkstep
darkwave
de ascultat la servici
de codru
de dragoste
de jale
de pahar
death industrial
death metal
death rock
death/doom
deathcore
deathgrind
deathrock
deep funk
deep house
deep soul
degung
delta blues
dementia
desert rock
desi
detroit blues
detroit techno
dhamar
dhimotiká
dhrupad
dhun
digital hardcore
dirge
dirty dutch
dirty rap
dirty rap/pornocore
dirty south
disco
disco house
disco polo
disney
disney hardcore
disney pop
diva house
divine rock
dixieland
dixieland jazz
djambadon
djent
dodompa
doina
dombola
dondang sayang
donegal fiddle tradition
dongjing
doo wop
doom metal
doomcore
downtempo
drag
dream pop
drone doom
drone metal
drone music
dronology
drum and bass
dub
dub house
dubanguthu
dubstep
dubtronica
dunedin sound
dunun
dutch jazz
décima
early music
east coast blues
east coast hip hop
easy listening
electric blues
electric folk
electro
electro backbeat
electro hop
electro house
electro punk
electro-industrial
electro-swing
electroclash
electrofunk
electronic
electronic art music
electronic body music
electronic dance
electronic luk thung
electronic music
electronic rock
electronica
electropop
elevator music
emo
emo pop
emo rap
emocore
emotronic
enka
epic doom metal
epic metal
eremwu eu
ethereal pop
ethereal wave
euro
euro disco
eurobeat
eurodance
europop
eurotrance
eurourban
exotica
experimental music
experimental noise
experimental pop
experimental rock
extreme metal
ezengileer
fado
falak
fandango
farruca
fife and drum blues
filk
film score
filmi
filmi-ghazal
finger-style
fjatpangarri
flamenco
flamenco rumba
flower power
foaie verde
fofa
folk hop
folk metal
folk music
folk pop
folk punk
folk rock
folktronica
forró
franco-country
freak-folk
freakbeat
free improvisation
free jazz
free music
freestyle
freestyle house
freetekno
french pop
frenchcore
frevo
fricote
fuji
fuji music
fulia
full on
funaná
funeral doom
funk
funk metal
funk rock
funkcore
funky house
furniture music
fusion jazz
g-funk
gaana
gabba
gabber
gagaku
gaikyoku
gaita
galant
gamad
gambang kromong
gamelan
gamelan angklung
gamelan bang
gamelan bebonangan
gamelan buh
gamelan degung
gamelan gede
gamelan kebyar
gamelan salendro
gamelan selunding
gamelan semar pegulingan
gamewave
gammeldans
gandrung
gangsta rap
gar
garage rock
garrotin
gavotte
gelugpa chanting
gender wayang
gending
german folk music
gharbi
gharnati
ghazal
ghazal-song
ghetto house
ghettotech
girl group
glam metal
glam punk
glam rock
glitch
gnawa
go-go
goa
goa trance
gong-chime music
goombay
goregrind
goshu ondo
gospel music
gothic metal
gothic rock
granadinas
grebo
gregorian chant
grime
grindcore
groove metal
group sounds
grunge
grupera
guaguanbo
guajira
guasca
guitarra baiana
guitarradas
gumbe
gunchei
gunka
guoyue
gwo ka
gwo ka moderne
gypsy jazz
gypsy punk
gypsybilly
gyu ke
habanera
hajnali
hakka
halling
hambo
hands up
hapa haole
happy hardcore
haqibah
hard
hard bop
hard house
hard rock
hard trance
hardcore hip hop
hardcore metal
hardcore punk
hardcore techno
hardstyle
harepa
harmonica blues
hasaposérviko
heart attack
heartland rock
heavy beat
heavy metal
hesher
hi-nrg
highlands
highlife
highlife fusion
hillybilly music
hindustani classical music
hip hop
hip hop & rap
hip hop soul
hip house
hiplife
hiragasy
hiva usu
hong kong and cantonese pop
hong kong english pop
honky tonk
honkyoku
hora lunga
hornpipe
horror punk
horrorcore
horrorcore rap
house
house music
hua'er
huasteco
huayno
hula
humor
humppa
hunguhungu
hyangak
hymn
hyphy
hát chau van
hát chèo
hát cãi luong
hát tuồng
ibiza music
icaro
idm
igbo music
ijexá
ilahije
illbient
impressionist music
improvisational
incidental music
indian pop
indie folk
indie music
indie pop
indie rock
indietronica
indo jazz
indo rock
indonesian pop
indoyíftika
industrial death metal
industrial hip-hop
industrial metal
industrial music
industrial musical
industrial rock
instrumental rock
intelligent dance music
international latin
inuit music
iranian pop
irish folk
irish rebel music
iscathamiya
isicathamiya
isikhwela jo
island
isolationist
italo dance
italo disco
italo house
itsmeños
izvorna bosanska muzika
j'ouvert
j-fusion
j-pop
j-rock
jaipongan
jaliscienses
jam band
jam rock
jamana kura
jamrieng samai
jangle pop
japanese pop
jarana
jariang
jarochos
jawaiian
jazz
jazz blues
jazz fusion
jazz metal
jazz rap
jazz-funk
jazz-rock
jegog
jenkka
jesus music
jibaro
jig
jig punk
jing ping
jingle
jit
jitterbug
jive
joged
joged bumbung
joik
jonnycore
joropo
jota
jtek
jug band
jujitsu
juju
juke joint blues
jump blues
jumpstyle
jungle
junkanoo
juré
jùjú
k-pop
kaba
kabuki
kachāshī
kadans
kagok
kagyupa chanting
kaiso
kalamatianó
kalattuut
kalinda
kamba pop
kan ha diskan
kansas city blues
kantrum
kantádhes
kargyraa
karma
kaseko
katajjaq
kawachi ondo
kayōkyoku
ke-kwe
kebyar
kecak
kecapi suling
kertok
khaleeji
khap
khelimaski djili
khene
khoomei
khorovodi
khplam wai
khrung sai
khyal
kilapanda
kinko
kirtan
kiwi rock
kizomba
klape
klasik
klezmer
kliningan
kléftiko
kochare
kolomyjka
komagaku
kompa
konpa
korean pop
koumpaneia
kpanlogo
krakowiak
krautrock
kriti
kroncong
krump
krzesany
kuduro
kulintang
kulning
kumina
kun-borrk
kundere
kundiman
kussundé
kutumba wake
kveding
kvæði
kwaito
kwassa kwassa
kwela
käng
kélé
kĩkũyũ pop
la la
latin american
latin jazz
latin pop
latin rap
lavway
laïko
laïkó
le leagan
legényes
lelio
letkajenkka
levenslied
lhamo
lieder
light music
light rock
likanos
liquid drum&bass
liquid funk
liquindi
llanera
llanto
lo-fi
lo-fi music
loki djili
long-song
louisiana blues
louisiana swamp pop
lounge music
lovers rock
lowercase
lubbock sound
lucknavi thumri
luhya omutibo
luk grung
lullaby
lundu
lundum
m-base
madchester
madrigal
mafioso rap
maglaal
magnificat
mahori
mainstream jazz
makossa
makossa-soukous
malagueñas
malawian jazz
malhun
maloya
maluf
maluka
mambo
manaschi
mandarin pop
manding swing
mango
mangue bit
mangulina
manikay
manila sound
manouche
manzuma
mapouka
mapouka-serré
marabi
maracatu
marga
mariachi
marimba
marinera
marrabenta
martial industrial
martinetes
maskanda
mass
matamuerte
math rock
mathcore
matt bello
maxixe
mazurka
mbalax
mbaqanga
mbube
mbumba
medh
medieval folk rock
medieval metal
medieval music
meditation
mejorana
melhoun
melhûn
melodic black metal
melodic death metal
melodic hardcore
melodic metalcore
melodic music
melodic trance
memphis blues
memphis rap
memphis soul
mento
merengue
merengue típico moderno
merengue-bomba
meringue
merseybeat
metal
metalcore
metallic hardcore
mexican pop
mexican rock
mexican son
meykhana
mezwed
miami bass
microhouse
middle of the road
midwest hip hop
milonga
min'yo
mineras
mini compas
mini-jazz
minimal techno
minimalist music
minimalist trance
minneapolis sound
minstrel show
minuet
mirolóyia
modal jazz
modern classical
modern classical music
modern laika
modern rock
modinha
mohabelo
montuno
monumental dance
mor lam
mor lam sing
morna
motorpop
motown
mozambique
mpb
mugam
multicultural
murga
musette
museve
mushroom jazz
music drama
music hall
musiqi-e assil
musique concrète
mutuashi
muwashshah
muzak
méringue
música campesina
música criolla
música de la interior
música llanera
música nordestina
música popular brasileira
música tropical
nagauta
nakasi
nangma
nanguan
narcocorrido
nardcore
narodna muzika
nasheed
nashville sound
nashville sound/countrypolitan
national socialist black metal
naturalismo
nederpop
neo soul
neo-classical metal
neo-medieval
neo-prog
neo-psychedelia
neoclassical
neoclassical metal
neoclassical music
neofolk
neotraditional country
nerdcore
neue deutsche härte
neue deutsche welle
new age music
new beat
new instrumental
new jack swing
new orleans blues
new orleans jazz
new pop
new prog
new rave
new romantic
new school hip hop
new taiwanese song
new wave
new wave of british heavy metal
new wave of new wave
new weird america
new york blues
new york house
newgrass
nganja
nightcore
nintendocore
nisiótika
no wave
noh
noise music
noise pop
noise rock
nongak
norae undong
nordic folk dance music
nordic folk music
nortec
norteño
northern soul
nota
nu breaks
nu jazz
nu metal
nu soul
nueva canción
nyatiti
néo kýma
obscuro
oi!
old school hip hop
old-time
oldies
olonkho
oltului
ondo
opera
operatic pop
oratorio
orchestra
orchestral
organ trio
organic ambient
organum
orgel
oriental metal
ottava rima
outlaw country
outsider music
p-funk
pagan metal
pagan rock
pagode
paisley underground
palm wine
palm-wine
pambiche
panambih
panchai baja
panchavadyam
pansori
paranda
parang
parody
parranda
partido alto
pasillo
patriotic
peace punk
pelimanni music
petenera
peyote song
philadelphia soul
piano blues
piano rock
piedmont blues
pimba
pinoy pop
pinoy rock
pinpeat orchestra
piphat
piyyutim
plainchant
plena
pleng phua cheewit
pleng thai sakorn
political hip hop
polka
polo
polonaise
pols
polska
pong lang
pop
pop folk
pop music
pop punk
pop rap
pop rock
pop sunda
pornocore
porro
post disco
post-britpop
post-disco
post-grunge
post-hardcore
post-industrial
post-metal
post-minimalism
post-punk
post-rock
post-romanticism
pow-wow
power electronics
power metal
power noise
power pop
powerviolence
ppongtchak
praise song
program symphony
progressive bluegrass
progressive country
progressive death metal
progressive electronic
progressive electronic music
progressive folk
progressive folk music
progressive house
progressive metal
progressive power metal
progressive rock
progressive trance
progressive thrash metal
protopunk
psych folk
psychedelic music
psychedelic pop
psychedelic rock
psychedelic trance
psychobilly
punk blues
punk cabaret
punk jazz
punk rock
punta
punta rock
qasidah
qasidah modern
qawwali
quadrille
quan ho
queercore
quiet storm
rada
raga
raga rock
ragga
ragga jungle
raggamuffin
ragtime
rai
rake-and-scrape
ramkbach
ramvong
ranchera
rap
rap metal
rap rock
rapcore
rara
rare groove
rasiya
rave
raw rock
raï
rebetiko
red dirt
reel
reggae
reggae 110
reggae bultrón
reggae en español
reggae fusion
reggae highlife
reggaefusion
reggaeton
rekilaulu
relax music
religious
rembetiko
renaissance music
requiem
rhapsody
rhyming spiritual
rhythm & blues
rhythm and blues
ricercar
riot grrrl
rock
rock and roll
rock en español
rock opera
rockabilly
rocksteady
rococo
romantic flow
romantic period in music
rondeaux
ronggeng
roots reggae
roots rock
roots rock reggae
rumba
russian pop
rímur
sabar
sacred harp
sacred music
sadcore
saibara
sakara
salegy
salsa
salsa erotica
salsa romantica
saltarello
samba
samba-canção
samba-reggae
samba-rock
sambai
sanjo
sato kagura
sawt
saya
scat
schlager
schottisch
schranz
scottish baroque music
screamo
scrumpy and western
sea shanty
sean nós
second viennese school
sega music
seggae
seis
semba
sephardic music
serialism
set dance
sevdalinka
sevillana
shabab
shabad
shalako
shan'ge
shango
shape note
shibuya-kei
shidaiqu
shima uta
shock rock
shoegaze
shoegazer
shoka
shomyo
show tune
sica
siguiriyas
silat
sinawi
situational
ska
ska punk
skacore
skald
skate punk
skiffle
slack-key guitar
slide
slowcore
sludge metal
slängpolska
smooth jazz
soca
soft rock
son
son montuno
son-batá
sonata
songo
songo-salsa
sophisti-pop
soukous
soul
soul blues
soul jazz
soul music
southern gospel
southern harmony
southern hip hop
southern metal
southern rock
southern soul
space age pop
space music
space rock
spectralism
speed garage
speed metal
speedcore
spirituals
spouge
sprechgesang
square dance
squee
st. louis blues
stand-up
steelband
stoner metal
stoner rock
straight edge
strathspeys
stride
string
string quartet
sufi music
suite
sunshine pop
suomirock
super eurobeat
surf ballad
surf instrumental
surf music
surf pop
surf rock
swamp blues
swamp pop
swamp rock
swing
swing music
swingbeat
sygyt
symphonic
symphonic black metal
symphonic metal
symphonic poem
symphonic rock
symphony
synthcore
synthpop
synthpunk
t'ong guitar
taarab
tai tu
taiwanese pop
tala
talempong
tambu
tamburitza
tamil christian keerthanai
tango
tanguk
tappa
tarana
tarantella
taranto
tech
tech house
tech trance
technical death metal
technical metal
techno
technoid
technopop
techstep
techtonik
teen pop
tejano
tejano music
tekno
tembang sunda
teutonic thrash metal
texas blues
thai pop
thillana
thrash metal
thrashcore
thumri
tibetan pop
tiento
timbila
tin pan alley
tinga
tinku
toeshey
togaku
trad jazz
traditional bluegrass
traditional heavy metal
traditional pop music
trallalero
trance
tribal house
trikitixa
trip hop
trip rock
trip-hop
tropicalia
tropicalismo
tropipop
truck-driving country
tumba
turbo-folk
turkish music
turkish pop
turntablism
tuvan throat-singing
twee pop
twist
two tone
táncház
uk garage
uk pub rock
unblack metal
underground music
uplifting
uplifting trance
urban cowboy
urban folk
urban jazz
vallenato
vaudeville
venezuela
verbunkos
verismo
viking metal
villanella
virelai
vispop
visual kei
visual music
vocal
vocal house
vocal jazz
vocal music
volksmusik
waila
waltz
wangga
warabe uta
wassoulou
weld
were music
west coast hip hop
west coast jazz
western
western blues
western swing
witch house
wizard rock
women's music
wong shadow
wonky pop
wood
work song
world fusion
world fusion music
world music
worldbeat
xhosa music
xoomii
yo-pop
yodeling
yukar
yé-yé
zajal
zapin
zarzuela
zeibekiko
zeuhl
ziglibithy
zouglou
zouk
zouk chouv
zouklove
zulu music
zydeco
EOF
}
conf_print_beets_genres_txt | tee ${DEST}/.config/beets/genres/genres.txt >/dev/null
conf_print_beets_genres_tree() {
cat <<-EOF
- african:
- african heavy metal
- african hip hop
- afrobeat
- apala
- benga
- bikutsi
- bongo flava
- cape jazz
- chimurenga
- coupé-décalé
- fuji music
- genge
- highlife
- hiplife
- isicathamiya
- jit
- jùjú
- kapuka
- kizomba
- kuduro
- kwaito
- kwela
- makossa
- maloya
- marrabenta
- mbalax
- mbaqanga
- mbube
- morna
- museve
- palm-wine
- raï
- sakara
- sega
- seggae
- semba
- soukous
- taarab
- zouglou
- asian:
- east asian:
- anison
- c-pop
- cantopop
- enka
- hong kong english pop
- j-pop
- k-pop
- kayōkyoku
- korean pop
- mandopop
- onkyokei
- taiwanese pop
- fann at-tanbura
- fijiri
- khaliji
- liwa
- sawt
- south and southeast asian:
- baila
- bhangra
- bhojpuri
- dangdut
- filmi
- indian pop
- lavani
- luk thung:
- luk krung
- manila sound
- morlam
- pinoy pop
- pop sunda
- ragini
- thai pop
- avant-garde:
- experimental music
- lo-fi
- musique concrète
- blues:
- african blues
- blues rock
- blues shouter
- british blues
- canadian blues
- chicago blues
- classic female blues
- contemporary r&b
- country blues
- delta blues
- detroit blues
- electric blues
- gospel blues
- hill country blues
- hokum blues
- jazz blues
- jump blues
- kansas city blues
- louisiana blues
- memphis blues
- piano blues
- piedmont blues
- punk blues
- soul blues
- st. louis blues
- swamp blues
- texas blues
- west coast blues
- caribbean and latin american:
- bachata
- baithak gana
- bolero
- brazilian:
- axé
- bossa nova
- brazilian rock
- brega
- choro
- forró
- frevo
- funk carioca
- lambada
- maracatu
- música popular brasileira
- música sertaneja
- pagode
- samba
- samba rock
- tecnobrega
- tropicalia
- zouk-lambada
- calypso
- chutney
- chutney soca
- compas
- mambo
- merengue
- méringue
- other latin:
- chicha
- criolla
- cumbia
- huayno
- mariachi
- ranchera
- tejano
- punta
- punta rock
- rasin
- reggaeton
- salsa
- soca
- son
- timba
- twoubadou
- zouk
- classical:
- ballet
- baroque:
- baroque music
- cantata
- chamber music:
- string quartet
- classical music
- concerto:
- concerto grosso
- contemporary classical
- modern classical
- opera
- oratorio
- orchestra:
- orchestral
- symphonic
- symphony
- organum
- mass:
- requiem
- sacred music:
- cantique
- gregorian chant
- sonata
- comedy:
- comedy music
- comedy rock
- humor
- parody music
- stand-up
- country:
- alternative country:
- cowpunk
- americana
- australian country music
- bakersfield sound
- bluegrass:
- progressive bluegrass
- reactionary bluegrass
- blues country
- cajun:
- cajun fiddle tunes
- christian country music
- classic country
- close harmony
- country pop
- country rap
- country rock
- country soul
- cowboy/western music
- dansband music
- franco-country
- gulf and western
- hellbilly music
- hokum
- honky tonk
- instrumental country
- lubbock sound
- nashville sound
- neotraditional country
- outlaw country
- progressive country
- psychobilly/punkabilly
- red dirt
- rockabilly
- sertanejo
- texas country
- traditional country music
- truck-driving country
- western swing
- zydeco
- easy listening:
- background music
- beautiful music
- elevator music
- furniture music
- lounge music
- middle of the road
- new-age music
- electronic:
- ambient:
- ambient dub
- ambient house
- ambient techno
- dark ambient
- drone music
- illbient
- isolationism
- lowercase
- asian underground
- breakbeat:
- 4-beat
- acid breaks
- baltimore club
- big beat
- breakbeat hardcore
- broken beat
- florida breaks
- nu skool breaks
- chiptune:
- bitpop
- game boy music
- nintendocore
- video game music
- yorkshire bleeps and bass
- disco:
- cosmic disco
- disco polo
- euro disco
- italo disco
- nu-disco
- space disco
- downtempo:
- acid jazz
- balearic beat
- chill out
- dub music
- dubtronica
- ethnic electronica
- moombahton
- nu jazz
- trip hop
- drum and bass:
- darkcore
- darkstep
- drumfunk
- drumstep
- hardstep
- intelligent drum and bass
- jump-up
- liquid funk
- neurofunk
- oldschool jungle:
- darkside jungle
- ragga jungle
- raggacore
- sambass
- techstep
- electro:
- crunk
- electro backbeat
- electro-grime
- electropop
- electroacoustic:
- acousmatic music
- computer music
- electroacoustic improvisation
- field recording
- live coding
- live electronics
- soundscape composition
- tape music
- electronic rock:
- alternative dance:
- baggy
- madchester
- dance-punk
- dance-rock
- dark wave
- electroclash
- electronicore
- electropunk
- ethereal wave
- indietronica
- new rave
- space rock
- synthpop
- synthpunk
- electronica:
- berlin school
- chillwave
- electronic art music
- electronic dance music
- folktronica
- freestyle music
- glitch
- idm
- laptronica
- skweee
- sound art
- synthcore
- eurodance:
- bubblegum dance
- italo dance
- turbofolk
- hardcore:
- bouncy house
- bouncy techno
- breakcore
- digital hardcore
- doomcore
- dubstyle
- gabber
- happy hardcore
- hardstyle
- jumpstyle
- makina
- speedcore
- terrorcore
- uk hardcore
- hi-nrg:
- eurobeat
- hard nrg
- new beat
- house:
- acid house
- chicago house
- deep house
- diva house
- dutch house
- electro house
- freestyle house
- french house
- funky house
- ghetto house
- hardbag
- hip house
- italo house
- latin house
- minimal house
- progressive house
- rave music
- swing house
- tech house
- tribal house
- uk hard house
- us garage
- vocal house
- industrial:
- aggrotech
- coldwave
- cybergrind
- dark electro
- death industrial
- electro-industrial
- electronic body music:
- futurepop
- industrial metal:
- neue deutsche härte
- industrial rock
- noise:
- japanoise
- power electronics
- power noise
- witch house
- post-disco:
- boogie
- dance-pop
- progressive:
- progressive house/trance:
- disco house
- dream house
- space house
- progressive breaks
- progressive drum & bass
- progressive techno
- techno:
- acid techno
- detroit techno
- free tekno
- ghettotech
- minimal
- nortec
- schranz
- techno-dnb
- technopop
- tecno brega
- toytown techno
- trance:
- acid trance
- classic trance
- dream trance
- goa trance:
- dark psytrance
- full on
- psybreaks
- psyprog
- suomisaundi
- hard trance
- tech trance
- uplifting trance:
- orchestral uplifting
- vocal trance
- uk garage:
- 2-step
- 4x4
- bassline
- breakstep
- dubstep
- funky
- grime
- speed garage
- trap
- folk:
- american folk revival
- anti-folk
- british folk revival
- celtic music
- contemporary folk
- filk music
- freak folk
- indie folk
- industrial folk
- neofolk
- progressive folk
- psychedelic folk
- sung poetry
- techno-folk
- hip hop:
- alternative hip hop
- avant-garde hip hop
- chap hop
- christian hip hop
- conscious hip hop
- country-rap
- crunkcore
- cumbia rap
- east coast hip hop:
- brick city club
- hardcore hip hop
- mafioso rap
- new jersey hip hop
- electro music
- freestyle rap
- g-funk
- gangsta rap
- golden age hip hop
- hip hop soul
- hip pop
- hyphy
- industrial hip hop
- instrumental hip hop
- jazz rap
- low bap
- lyrical hip hop
- merenrap
- midwest hip hop:
- chicago hip hop
- detroit hip hop
- horrorcore
- st. louis hip hop
- twin cities hip hop
- motswako
- nerdcore
- new jack swing
- new school hip hop
- old school hip hop
- political hip hop
- rap opera
- rap rock:
- rap metal
- rapcore
- songo-salsa
- southern hip hop:
- atlanta hip hop:
- snap music
- bounce music
- houston hip hop:
- chopped and screwed
- miami bass
- turntablism
- underground hip hop
- urban pasifika
- west coast hip hop:
- chicano rap
- jerkin'
- jazz:
- asian american jazz
- avant-garde jazz
- bebop
- boogie-woogie
- british dance band
- chamber jazz
- continental jazz
- cool jazz
- crossover jazz
- cubop
- dixieland
- ethno jazz
- european free jazz
- free funk
- free improvisation
- free jazz
- gypsy jazz
- hard bop
- jazz fusion
- jazz rock
- jazz-funk
- kansas city jazz
- latin jazz
- livetronica
- m-base
- mainstream jazz
- modal jazz
- neo-bop jazz
- neo-swing
- novelty ragtime
- orchestral jazz
- post-bop
- punk jazz
- ragtime
- shibuya-kei
- ska jazz
- smooth jazz
- soul jazz
- straight-ahead jazz
- stride jazz
- swing
- third stream
- trad jazz
- vocal jazz
- west coast gypsy jazz
- west coast jazz
- other:
- worldbeat
- pop:
- adult contemporary
- arab pop
- baroque pop
- bubblegum pop
- chanson
- christian pop
- classical crossover
- europop:
- austropop
- balkan pop
- french pop
- latin pop
- laïkó
- nederpop
- russian pop
- iranian pop
- jangle pop
- latin ballad
- levenslied
- louisiana swamp pop
- mexican pop
- motorpop
- new romanticism
- pop rap
- popera
- psychedelic pop
- schlager
- soft rock
- sophisti-pop
- space age pop
- sunshine pop
- surf pop
- teen pop
- traditional pop music
- turkish pop
- vispop
- wonky pop
- rhythm and blues:
- funk:
- deep funk
- go-go
- p-funk
- soul:
- blue-eyed soul
- neo soul
- northern soul
- rock:
- alternative rock:
- britpop:
- post-britpop
- dream pop
- grunge:
- post-grunge
- indie pop:
- dunedin sound
- twee pop
- indie rock
- noise pop
- nu metal
- post-punk revival
- post-rock:
- post-metal
- sadcore
- shoegaze
- slowcore
- art rock
- beat music
- chinese rock
- christian rock
- dark cabaret
- desert rock
- experimental rock
- folk rock
- garage rock
- glam rock
- hard rock
- heavy metal:
- alternative metal:
- funk metal
- black metal:
- viking metal
- christian metal
- death metal:
- death/doom
- goregrind
- melodic death metal
- technical death metal
- doom metal:
- epic doom metal
- funeral doom
- drone metal
- epic metal
- folk metal:
- celtic metal
- medieval metal
- pagan metal
- funk metal
- glam metal
- gothic metal
- industrial metal:
- industrial death metal
- metalcore:
- deathcore
- mathcore:
- djent
- synthcore
- neoclassical metal
- post-metal
- power metal:
- progressive power metal
- progressive metal
- sludge metal
- speed metal
- stoner rock:
- stoner metal
- symphonic metal
- thrash metal:
- crossover thrash
- groove metal
- progressive thrash metal
- teutonic thrash metal
- traditional heavy metal
- math rock
- new wave:
- world fusion
- paisley underground
- pop rock
- post-punk:
- gothic rock
- no wave
- noise rock
- power pop
- progressive rock:
- canterbury scene
- krautrock
- new prog
- rock in opposition
- psychedelic rock:
- acid rock
- freakbeat
- neo-psychedelia
- raga rock
- punk rock:
- anarcho punk:
- crust punk:
- d-beat
- art punk
- christian punk
- deathrock
- folk punk:
- celtic punk
- gypsy punk
- garage punk
- grindcore:
- crustgrind
- noisegrind
- hardcore punk:
- post-hardcore:
- emo:
- screamo
- powerviolence
- street punk
- thrashcore
- horror punk
- oi!
- pop punk
- psychobilly
- riot grrrl
- ska punk:
- ska-core
- skate punk
- rock and roll
- southern rock
- sufi rock
- surf rock
- visual kei:
- nagoya kei
- reggae:
- roots reggae
- reggae fusion
- reggae en español:
- spanish reggae
- reggae 110
- reggae bultrón
- romantic flow
- lovers rock
- raggamuffin:
- ragga
- dancehall
- ska:
- 2 tone
- dub
- rocksteady
EOF
}
conf_print_beets_genres_tree | tee ${DEST}/.config/beets/genres/genres-tree.yaml >/dev/null
# Install beets-xtractor and essentia for classification