MusicPlayerPlus installs and configures the Beets media library management system. Beets is a powerful and flexible media library management system and a large part of that power and flexibility is provided by the very rich Beets plugin system. Plugins extend beets’ core functionality. They add new commands, fetch additional data during import, provide new metadata sources, and much more.
MusicPlayerPlus includes many of the Beets plugins that address functionality related to the MusicPlayerPlus components and use cases. See https://beets.readthedocs.io/en/stable/plugins/ for more information on Beets plugins.
For an introduction to the Beets media library management system, see the MusicPlayerPlus article Introduction to Beets
MusicPlayerPlus Beets Plugins
MusicPlayerPlus installs and configures several Beets plugins during the post-installation initialization performed by mppinit
. The following Beets plugins are installed:
- describe - attempts to give you the full picture on a single attribute of your library item
- Usage:
beet describe field_name
- Examples:
beet describe bpm
beet describe genre
beet describe genre albumartist:'Various Artists'
- Usage:
- duplicates - adds a new command,
beet duplicates
orbeet dup
, finds and lists duplicate tracks or albums in your collection- Usage:
beet duplicates [QUERY]
- Examples:
beet duplicates
beet duplicates --help
beet duplicates year:2008
beet duplicates -k title -k albumartist -k album
- Usage:
- edit - lets you modify music metadata using your favorite text editor
- Usage:
beet edit QUERY
- Usage:
- fetchart - retrieves album art images from various sources on the Web and stores them as image files
- Usage:
beet fetchart [OPTIONS] [QUERY]
- Examples:
- Display missing album art for media matching ‘beatles’
beet fetchart -q beatles
- Fetch missing album art for media matching ‘beatles’
beet fetchart beatles
- Display missing album art for media matching ‘beatles’
- Usage:
- fromfilename - helps to tag albums that are missing tags altogether but where the filenames contain useful information like the artist and title
- hook - lets you run commands in response to events
- importadded - useful when an existing collection is imported and the time when albums and items were added should be preserved
- info - provides a command that dumps the current tag values for any file format supported by beets
- Usage:
beet info [PATH|QUERY]
- Examples:
beet info /path/to/music.flac
beet info beatles
beet info -i 'title,mb_artistid' beatles
- Usage:
- lyrics - fetches and stores song lyrics from databases on the Web
- Usage:
beet lyrics [QUERY]
- Examples:
beet lyrics
beet lyrics magnetic fields
beet lyrics magnetic fields absolutely cuckoo
- Usage:
- lastgenre - fetches tags from Last.fm and assigns them as genres to your albums and items
- Usage:
beet lastgenre [QUERY]
- Usage:
- missing - adds a new command,
beet missing
orbeet miss
, which finds and lists, for every album in your collection, which or how many tracks are missing- Usage:
beet missing [QUERY]
- Examples:
beet missing
beet missing -a
beet missing year:2008
beet ls -a -f '$albumartist - $album: $missing'
- Usage:
- mbsync - provides the
beet mbsync
command, which lets you fetch metadata from MusicBrainz for albums and tracks that already have MusicBrainz IDs- Usage:
beet mbsync [QUERY]
- Examples:
beet mbsync --pretend
- Usage:
- mpdstats - collects statistics about your listening habits from MPD
- Usage:
beet mpdstats
- Usage:
- play - allows you to pass the results of a query to a music player in the form of an m3u playlist or paths on the command line
- Usage:
beet play [QUERY]
- Examples:
beet play beatles
beet play --args -shuffle
- Usage:
- playlist - use playlists in m3u format
- Examples:
beet ls playlist:/path/to/someplaylist.m3u
beet ls playlist:mycoolplaylist
- Examples:
- smartplaylist - generates smart playlists in m3u format based on beets queries every time your library changes. This plugin is specifically created to work well with MPD's playlist functionality.
- Examples:
beet splupdate
beet splupdate BeatlesUniverse.m3u MyTravelPlaylist
- Examples:
- mpdupdate - automatically updates MPD's index whenever you change your beets library
- unimported - list all files in the library folder which are not listed in the beets library database, including art files
- Usage:
beet unimported
- Usage:
- xtractor - obtain low and high level musical information from your songs
- Usage:
beet xtractor [options] [QUERY...]
- Examples:
beet xtractor --force donovan
beet xtractor -dry-run beatles
- Essentia: An Audio Analysis Library for Music Information Retrieval (PDF)
- Usage:
- yearfixer - finds the original_year for each of your songs by querying the MusicBrainz database and finding the first release date that is associated with it.
- Usage:
beet yearfixer [--force] [QUERY...]
- Examples:
beet yearfixer donovan
beet yearfixer -f beatles
- Usage:
The Beets web plugin is not installed or configured by default. See the next section for detailed instructions on installing and configuring the web plugin.
- web - query, browse, and play your music in browsers that support HTML5 audio
- Usage:
beet web [HOSTNAME] [PORT]
- Usage:
Beets web plugin
The Beets web plugin provides a graphical user interface to browse, query, and play music in a Beets library. It requires the flask
Python pip module and a browser that supports HTML5 audio. See the web plugin manual for greater detail. What follows are the basics of setting up the Beets web plugin.
Install the flask Python pip module:
1
pip install flask
Add the web
plugin to the list of enabled plugins in ~/.config/beets/config.yaml
and add a web
configuration in config.yaml
. For example, to use the default web plugin configuration settings but run the web plugin server on port 8339 instead of 8337 and bind to all interfaces rather than just 127.0.0.1, add the following web
configuration in ~/.config/beets/config.yaml
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
web:
# The server hostname. Set this to 0.0.0.0 to bind to all interfaces.
# Default: Bind to 127.0.0.1.
host: 0.0.0.0
# The server port. Default: 8337.
port: 8339
# The CORS allowed origin (see Cross-Origin Resource Sharing (CORS), below).
# Default: CORS is disabled.
# cors: no
# Support credentials when using CORS (see Cross-Origin Resource Sharing (CORS), below).
# Default: CORS_SUPPORTS_CREDENTIALS is disabled.
# cors_supports_credentials: no
# If true, enable reverse proxy support (see Reverse Proxy Support, below).
# Default: false.
# reverse_proxy: false
# If true, includes paths in item objects. Default: false.
# include_paths: false
# If true, DELETE and PATCH operations are not allowed. Only GET is permitted.
# Default: true.
# readonly: true
If you prefer to use the web plugin configuration defaults (bind to 127.0.0.1 with port 8337) then no web
configuration section is necessary in config.yaml
, just add the web
plugin to the list of enabled plugins.
To start the Beets web plugin server type beet web
. To override the host
and port
settings in config.yaml
, start the Beets web plugin server with beet web [HOSTNAME] [PORT]
. For example, to run a Beets web server on localhost only with Beets web server port 8335, run beet web localhost 8335
. To use the Beets web plugin with this example server startup, open a supported browser and go to http://localhost:8335/
Default Beets Configuration
Beets plugins are configured in ~/.config/beets/config.yaml
. The default MusicPlayerPlus Beets config.yaml
illustrates how the Beets plugins are configured.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
directory: ~/Music
library: ~/.config/beets/musiclibrary.db
# Uncomment if you wish to place secret paths/tokens/credentials in
# ~/.config/beets/secrets.yaml
#
#include:
# - secrets.yaml
import:
copy: yes
move: yes
write: yes
incremental: yes
incremental_skip_later: yes
quiet: no
quiet_fallback: asis
resume: yes
from_scratch: no
default_action: apply
detail: yes
non_rec_action: ask
# duplicate_action can be 'skip', 'keep', 'remove', 'merge' or 'ask'
duplicate_action: skip
group_albums: no
autotag: yes
bell: no
log: ~/.config/beets/logs/import.log
plugins:
- acousticbrainz
- albumtypes
- bandcamp
# - convert
- describe
# - discogs
- duplicates
- edit
- fetchart
- fromfilename
- hook
- importadded
- info
- lyrics
- lastgenre
- missing
- mbsync
- mpdstats
- play
- playlist
- smartplaylist
- mpdupdate
- unimported
- web
- xtractor
- yearfixer
acousticbrainz:
auto: no
force: no
albumtypes:
types:
- album: ''
- ep: 'EP'
- single: 'Single'
- soundtrack: 'OST'
- live: 'Live'
- compilation: 'Anthology'
- remix: 'Remix'
ignore_va: compilation
bracket: '[]'
bandcamp:
include_digital_only_tracks: true
search_max: 2
art: no
comments_separator: "\n---\n"
exclude_extra_fields:
- comments
genre:
capitalize: no
maximum: 0
always_include: []
mode: progressive # classical, progressive or psychedelic
# Uncomment this and the convert plugin entry to enable format conversion
# of media in your Beets library with the 'beet convert' command
#
#convert:
# dest: ~/Music/__Converted__
# quiet: true
# command: ffmpeg -i $source -y -vn -aq 2 $dest
# extension: mp3
duplicates:
album: no
checksum: ffmpeg -i {file} -f crc -
# keys: [mb_trackid, mb_albumid]
# tiebreak:
# items: [bitrate]
fetchart:
# Enable automatic album art fetching during import.
auto: no
# Pick only trusted album art by ignoring filenames that do not contain
# one of the keywords in "cover_names".
cautious: no
# Only allow images with 1:1 aspect ratio
enforce_ratio: yes
# Only images with a width bigger or equal to minwidth are considered as
# valid album art candidates.
minwidth: 256
# A maximum image width to downscale fetched images if they are too big.
# The height is recomputed so that the aspect ratio is preserved.
maxwidth: 3000
# An asterisk * expands to all available sources.
# Supported sources include:
# filesystem coverart itunes amazon albumart wikipedia google fanarttv lastfm
# No remote art sources are queried if local art is found in the filesystem.
sources:
- filesystem
- coverart
- albumart
# - lastfm
- wikipedia
# API key to use for the fanart API.
# lastfm_key: REDACTED
# Store the art source (e.g. filesystem) in the beets database as art_source.
store_source: yes
mpdstats:
host: localhost
port: 6600
rating: yes
rating_mix: 0.75
lastgenre:
# Fetch genres automatically during import. Default: yes.
auto: no
#
# Use a canonicalization tree. Setting this to yes will use a built-in tree.
# You can also set it to a path, like the whitelist config value,
# to use your own tree. Default: no (disabled).
#canonical: no
# Use a local copy of the built-in tree
canonical: ~/.config/beets/genres/genres-tree.yaml
#
# Number of genres to fetch. Default: 1
count: 1
#
# 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.
fallback: Unknown
#
# 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,
# set the force option to no. Default: yes.
# NOTE: May not be working as expected. Perhaps fixed in 1.6.1 Investigating
force: no
#
# Minimum popularity factor below which genres are discarded.
# Default: 10.
min_weight: 10
#
# Sort genres by the most to least specific, rather than most to least
# popular. Default: no.
# Setting this to yes may produce an interesting set of genres.
# To experiment, view genres set during import with 'beet describe genre'
# then change this to 'no' and run 'beet lastgenre'. View the updated
# genre tags with 'beet describe genre'. If you prefer to go back to using
# more specific genre tags rather than popular, set this back to 'yes' and
# re-run 'beet lastgenre'.
prefer_specific: yes
#
# Which entity to look up in Last.fm. Can be either artist, album or track.
# Default: album.
source: track
#
# A separator for multiple genres. Default: ', '.
separator: ', '
#
# The filename of a custom genre list, yes to use the internal whitelist,
# or no to consider all genres valid. Default: yes.
#whitelist: yes
# Use a local copy of the internal whitelist
whitelist: ~/.config/beets/genres/genres.txt
#
# Convert the new tags to TitleCase before saving. Default: yes.
title_case: yes
lyrics:
# Fetch lyrics automatically during import. Default: yes.
# No lyrics are fetched during import. Run 'mpplus -L` after import.
auto: no
# List of sources to search for lyrics. An asterisk * expands to all
# available sources. Default: google musixmatch genius tekstowo
# Currently it appears MusixMatch and Genius are blocking Beets.
# Google requires an API key - use that if you have one.
# The only free no-setup-required service is the Polish one but
# they have changed their website so Beets lyrics scraping adds
# some untranslated Polish at the beginning and end of the lyrics.
# For now, we use the Polish service as default lyrics source.
# Users may wish to go through the trouble of activating Google.
sources: tekstowo
#
# Your Bing Translation application password
# (to Activate On-the-Fly Translation)
# bing_client_secret:
#
# By default all lyrics with a language other than bing_lang_to
# are translated. Use a list of lang codes to restrict the set of
# source languages to translate.
# Default: []
# bing_lang_from: [ en ]
#
# Language to translate lyrics into. Default: None.
# bing_lang_to: en
#
# 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.
# fallback:
#
# By default, beets won’t fetch lyrics if the files already have ones.
# To instead always fetch lyrics, set the force option to yes. Default: no.
# force: yes
#
# Your Google API key (to enable the Google Custom Search backend).
# Default: None.
#
# google_API_key:
#
# The custom search engine to use. Default: The beets custom search engine
# google_engine_ID:
play:
# The command used to open the playlist. Default: xdg-open
# Insert $args to use the --args feature.
command: /usr/share/musicplayerplus/scripts/mpcplay.sh $args
# If set, emit paths relative to this directory. Default: None.
relative_to: ~/Music
# When using the -a option, the m3u will contain the paths to each track on
# the matched albums. Enable this option to store paths to folders instead.
# Default: no.
#use_folders: no
# Instead of creating a temporary m3u playlist and then opening it, simply
# call the command with the paths returned by the query as arguments.
# Default: no.
raw: yes
# Set the minimum number of files to play which will trigger a warning to
# be emitted. If set to no, warning are never issued. Default: 100.
warning_threshold: 500
# Set whether or not a UTF-8 Byte Order Mark should be emitted into the m3u
# file. If you’re using foobar2000 or Winamp, this is needed. Default: no.
#bom: no
playlist:
auto: yes
playlist_dir: ~/Music/Playlists
# relative_to: ~/Music
relative_to: /
smartplaylist:
auto: no
# Default is absolute paths in playlists
# relative_to: ~/Music
playlist_dir: ~/Music/Playlists
forward_slash: no
playlists:
- name: 'rating.m3u'
query: 'rating:0.4..1.0'
# - name: 'not_played.m3u'
# query: '-play_count: artist:'
# - name: beatles.m3u
# query: 'artist:Beatles'
- name: 1940s.m3u
query: 'original_year:1940..1949'
- name: 1950s.m3u
query: 'original_year:1950..1959'
- name: 1960s.m3u
query: 'original_year:1960..1969'
- name: 1970s.m3u
query: 'original_year:1970..1979'
- name: 1980s.m3u
query: 'original_year:1980..1989'
- name: 1990s.m3u
query: 'original_year:1990..1999'
- name: 2000s.m3u
query: 'original_year:2000..2009'
- name: 2010s.m3u
query: 'original_year:2010..2019'
- name: 2020s.m3u
query: 'original_year:2020..2029'
- name: 'ReleasedIn$original_year.m3u'
query: 'original_year::195(0|1|2|3|4|5|6|7|8|9)'
- name: 'ReleasedIn$original_year.m3u'
query: 'original_year::196(0|1|2|3|4|5|6|7|8|9)'
- name: 'ReleasedIn$original_year.m3u'
query: 'original_year::197(0|1|2|3|4|5|6|7|8|9)'
- name: 'ReleasedIn$original_year.m3u'
query: 'original_year::198(0|1|2|3|4|5|6|7|8|9)'
- name: 'ReleasedIn$original_year.m3u'
query: 'original_year::199(0|1|2|3|4|5|6|7|8|9)'
- name: 'ReleasedIn$original_year.m3u'
query: 'original_year::200(0|1|2|3|4|5|6|7|8|9)'
- name: 'ReleasedIn$original_year.m3u'
query: 'original_year::201(0|1|2|3|4|5|6|7|8|9)'
- name: 'ReleasedIn$original_year.m3u'
query: 'original_year::202(0|1|2)'
mpd:
host: localhost
port: 6600
rating: yes
rating_mix: 0.75
# Uncomment this and the discogs plugin entry to enable Discogs metadata source
# Install the discogs-client with "python3 -m pip install python3-discogs-client"
#
#discogs:
# source_weight: 0.0
# index_tracks: yes
# user_token: Your_Discogs_User_Token
musicbrainz:
# Default: 5
# Higher: better for albums with many releases in many formats/countries
# Lower: better for box sets
#searchlimit: 10
extra_tags: [year, catalognum, country, media, label]
#genres: yes
# Disable Musicbrainz: not in Beets 1.6.0, will be in 1.6.1
# enabled: no
match:
strong_rec_thresh: 0.10
medium_rec_thresh: 0.25
#strong_rec_thresh: 0.075
#medium_rec_thresh: 0.125
max_rec:
unmatched_tracks: low
missing_tracks: strong
# The higher the weight, the lower the items go in the candidate list
# (greater distance) when this penalty is applied.
distance_weights:
# Default: 3.0
album: 6.0
# Default: 3.0
artist: 7.0
# Default: 2.0
totaltracks: 4.0
# Default: 0.9
missing_tracks: 1.0
# Default: 0.6
unmatched_tracks: 10.0
#preferred:
# media: ['CD', 'Digital Media|File', 'Digital Media']
# countries: ['US', 'GB|UK']
preferred:
countries: ['US', 'XW', 'GB|UK']
media: ['Digital Media|File', 'CD']
ignored_media:
['DVD', 'DVD-Video', 'Blu-ray', 'HD-DVD', 'VCD', 'SVCD', 'UMD', 'VHS']
paths:
# Default paths configuration
#
# default: $albumartist/$album%aunique{}/$track $title
# singleton: Non-Album/$artist/$title
# comp: Compilations/$album%aunique{}/$track $title
#
# MusicPlayerPlus paths configuration
#
default: "%if{$albumartist,%title{$albumartist},%if{$artist,%title{$artist},Unknown Artist}}/[%if{$original_year,$original_year,%if{$year,$year,0000}}] %if{$album,$album%aunique{},Unknown Album}%if{$atypes, $atypes}/$track - $title"
singleton: "%if{$albumartist,%title{$albumartist},%if{$artist,%title{$artist},Unknown Artist}}/[%if{$original_year,$original_year,%if{$year,$year,0000}}] %if{$album,$album%aunique{},Unknown Album}/$track - $title"
comp: Compilations/[%if{$original_year,$original_year,%if{$year,$year,0000}}] %if{$album,$album%aunique{},Unknown Album}%if{$atypes, $atypes}/$track - $artist - $title
albumtype:soundtrack: Soundtracks/[%if{$original_year,$original_year,%if{$year,$year,0000}}] %if{$album,$album%aunique{},Unknown Album}%if{$atypes, $atypes}/$track - $title
ignore: ['.DS_Store', '.*', '*~', 'System Volume Information', 'lost+found']
importadded:
preserve_mtimes: yes
preserve_write_mtimes: yes
threaded: yes
unimported:
ignore_extensions: jpg png
ignore_subdirectories: data tmp
web:
host: 0.0.0.0
port: 8337
cors: '*'
include_paths: false
readonly: true
xtractor:
# auto not implemented yet, run xtractor manually after import
auto: no
dry-run: no
write: yes
threads: 2
force: no
quiet: no
keep_output: yes
keep_profiles: no
output_path: ~/.config/beets/xtraction_data
essentia_extractor: /usr/bin/essentia_streaming_extractor_music
extractor_profile:
outputFormat: json
outputFrames: 0
lowlevel:
frameSize: 2048
hopSize: 1024
chromaprint:
compute: 0
highlevel:
compute: 1
svm_models:
- /usr/share/mpplus-essentia/svm_models/danceability.history
- /usr/share/mpplus-essentia/svm_models/gender.history
# - /usr/share/mpplus-essentia/svm_models/genre_dortmund.history
# - /usr/share/mpplus-essentia/svm_models/genre_electronic.history
# - /usr/share/mpplus-essentia/svm_models/genre_tzanetakis.history
- /usr/share/mpplus-essentia/svm_models/genre_rosamerica.history
- /usr/share/mpplus-essentia/svm_models/ismir04_rhythm.history
- /usr/share/mpplus-essentia/svm_models/mood_acoustic.history
- /usr/share/mpplus-essentia/svm_models/mood_aggressive.history
- /usr/share/mpplus-essentia/svm_models/mood_electronic.history
- /usr/share/mpplus-essentia/svm_models/mood_happy.history
- /usr/share/mpplus-essentia/svm_models/mood_party.history
- /usr/share/mpplus-essentia/svm_models/mood_relaxed.history
- /usr/share/mpplus-essentia/svm_models/mood_sad.history
- /usr/share/mpplus-essentia/svm_models/moods_mirex.history
- /usr/share/mpplus-essentia/svm_models/timbre.history
- /usr/share/mpplus-essentia/svm_models/tonal_atonal.history
- /usr/share/mpplus-essentia/svm_models/voice_instrumental.history
#
# MusicPlayerPlus custom xtractor targets configuration
#
low_level_targets:
bpm:
path: "rhythm.bpm"
type: integer
required: yes
danceability:
path: "rhythm.danceability"
type: float
beats_count:
path: "rhythm.beats_count"
type: integer
average_loudness:
path: "lowlevel.average_loudness"
type: float
required: yes
# initial_key:
# path: "tonal.initial_key"
# type: string
high_level_targets:
# acoustid_fingerprint:
# path: "chromaprint.string"
# type: string
key_key:
path: "tonal.key_edma.key"
type: string
key_scale:
path: "tonal.key_edma.scale"
type: string
chords_key:
path: "tonal.chords_key"
type: string
chords_scale:
path: "tonal.chords_scale"
type: string
replay_gain:
path: "metadata.audio_properties.replay_gain"
type: float
integrated_loudness:
path: "lowlevel.loudness_ebu128.integrated"
type: float
loudness_range:
path: "lowlevel.loudness_ebu128.loudness_range"
type: float
timbre:
path: "highlevel.timbre.value"
type: string
required: yes
danceable:
path: "highlevel.danceability.value"
type: string
required: yes
is_danceable:
path: "highlevel.danceability.all.danceable"
type: float
genre_rosamerica:
path: "highlevel.genre_rosamerica.value"
type: string
mood_acoustic:
path: "highlevel.mood_acoustic.value"
type: string
required: yes
mood_aggressive:
path: "highlevel.mood_aggressive.value"
type: string
required: yes
mood_electronic:
path: "highlevel.mood_electronic.value"
type: string
required: yes
mood_happy:
path: "highlevel.mood_happy.value"
type: string
required: yes
mood_sad:
path: "highlevel.mood_sad.value"
type: string
required: yes
mood_party:
path: "highlevel.mood_party.value"
type: string
required: yes
mood_relaxed:
path: "highlevel.mood_relaxed.value"
type: string
required: yes
yearfixer:
force: yes
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
hook:
hooks:
- event: import_begin
command: /usr/share/musicplayerplus/scripts/beet_log.sh Import begin
- event: import
command: /usr/share/musicplayerplus/scripts/beet_log.sh Import end