-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.yaml
489 lines (461 loc) · 12.8 KB
/
config.yaml
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
directory: /data/music
library: /data/beets/library.db
paths:
default: Albums/%title{$albumartist}/$album%aunique{}/$track $title
singleton: Singles/%title{$first_artist}/$title
comp: Compilations/$album%aunique{}/$track $title
# Load plugins beets can use.
plugins:
- describe
- web
- webm3u
- webrouter
- beetstream
- types
- smartplaylist
- importfeeds
- edit
- play
- mbsync
- spotify
#- discogs
- fromfilename
- lastgenre
- autogenre
- fetchart
- ftintitle
- inline
- rewrite
- ihate
- chroma
- xtractor
#- replaygain
- mpdstats
- convert
- bpm
- duplicates
- bareasc
- fuzzy
- info
- ytimport
- badfiles
- unimported
- random
# Run a web server that serves a GUI, Subsonic API and M3U playlists.
# See https://github.com/mgoltzsche/beets-webrouter
webrouter:
host: 0.0.0.0
port: 8337
routes:
/:
plugin: web
/favicon.ico:
plugin: webrouter.favicon
/subsonic:
plugin: beetstream
config:
never_transcode: true
playlist_dir: /data/playlists
/m3u:
plugin: webm3u
# Run a subsonic server.
# See https://github.com/BinaryBrain/Beetstream
beetstream:
host: 0.0.0.0
port: 8080
never_transcode: true
# Run a web server that provides a simple GUI and API.
# See https://beets.readthedocs.io/en/stable/plugins/web.html
web:
host: 0.0.0.0
port: 8337
reverse_proxy: true
readonly: true
# Run a web server to serve the playlists.
# See https://github.com/mgoltzsche/beets-webm3u
webm3u:
host: 0.0.0.0
port: 8339
# Import new audio files into the music library.
# Usage: beet import /import --singletons
import:
write: true
copy: true
move: true
link: false
hardlink: false
incremental: true
quiet: false
quiet_fallback: skip
log: /data/beets/import.log
# To import a large amount of data, enable this flag, run `beets import -q`, disable the flag and run `beets import`.
# This is to be prompted for skipped tracks only.
#incremental_skip_later: true
# Import liked songs from Youtube.
# See https://github.com/mgoltzsche/beets-ytimport
# Usage: beet ytimport --likes --max-likes 3
ytimport:
directory: /data/ytimport
spotify:
source_weight: 0.7
mode: list
tiebreak: popularity
show_failures: on
# Match tracks against the Discogs database during import.
#discogs:
# source_weight: 0.5
# Extract low and high level information from songs, analyzing the audio.
# See https://github.com/adamjakab/BeetsPluginXtractor
# Example: beet xtractor
xtractor:
auto: no
dry-run: no
write: yes
threads: 4
force: no
quiet: no
keep_output: no
keep_profiles: no
output_path: /tmp/xtractor
essentia_extractor: /usr/local/bin/essentia_streaming_extractor_music
high_level_targets:
genre_rosamerica_probability: # 0..1
path: "highlevel.genre_rosamerica.probability"
type: float
genre_electronic:
path: "highlevel.genre_electronic.value"
type: string
genre_electronic_probability: # 0..1
path: "highlevel.genre_electronic.probability"
type: float
timbre: # "dark" or "bright"
path: "highlevel.timbre.value"
type: string
tonal_atonal: # "tonal" or "atonal"
path: "highlevel.tonal_atonal.value"
type: string
key_edma: # e.g. "C#"
path: "tonal.key_edma.key"
type: string
key_edma_scale: # e.g. "minor"
path: "tonal.key_edma.scale"
type: string
extractor_profile:
highlevel:
svm_models:
- /var/lib/essentia/svm-models/beta5/danceability.history
- /var/lib/essentia/svm-models/beta5/gender.history
- /var/lib/essentia/svm-models/beta5/genre_rosamerica.history
- /var/lib/essentia/svm-models/beta5/genre_electronic.history
- /var/lib/essentia/svm-models/beta5/mood_acoustic.history
- /var/lib/essentia/svm-models/beta5/mood_aggressive.history
- /var/lib/essentia/svm-models/beta5/mood_electronic.history
- /var/lib/essentia/svm-models/beta5/mood_happy.history
- /var/lib/essentia/svm-models/beta5/mood_sad.history
- /var/lib/essentia/svm-models/beta5/mood_party.history
- /var/lib/essentia/svm-models/beta5/mood_relaxed.history
- /var/lib/essentia/svm-models/beta5/moods_mirex.history
- /var/lib/essentia/svm-models/beta5/voice_instrumental.history
- /var/lib/essentia/svm-models/beta5/tonal_atonal.history
- /var/lib/essentia/svm-models/beta5/timbre.history
# Match tracks against the Discogs database during import.
#discogs:
# source_weight: 0.5
# Move featured artists from the artist field to the title field.
# Apparently this works with albums only.
# See https://beets.readthedocs.io/en/stable/plugins/ftintitle.html
ftintitle:
auto: true
drop: false
format: 'feat. {0}'
# Extract the first artist into separate field when multiple artists specified.
# Works like the ftintitle plugin above but with non-album items.
# See https://github.com/beetbox/beets/issues/3176#issuecomment-851875879
item_fields:
first_artist: |
import re
m = re.match('^(.+?)\\s+(x\\s|\\(?(feat(\\.?|uring)|(ft|vs)\\.))', artist, flags=re.IGNORECASE)
if m:
return m[1]
return artist
# Write playlist file during each import.
# This allows to propagate the latest imports to other tools.
# See https://beets.readthedocs.io/en/stable/plugins/importfeeds.html
importfeeds:
formats: m3u
dir: /data/importfeed
m3u_name: imported.m3u
# Search tracks using their ASCII representation.
# See https://beets.readthedocs.io/en/stable/plugins/bareasc.html
# Example: beet ls '#dvorak'
bareasc:
prefix: '#'
# Search tracks using fuzzy pattern.
# See https://beets.readthedocs.io/en/stable/plugins/fuzzy.html
# Example: beet ls '~Vareoldur'
fuzzy:
threshold: 0.7
prefix: '~'
# Changes the type of meta data fields.
# See https://beets.readthedocs.io/en/stable/plugins/types.html
#types:
# Change rating from string to int in order to be able to apply range queries.
# Usage example:
# beet modify "My favorite track" rating=5
# beet ls rating:4..5
#rating: int
# Generate an acoustic fingerprint for every track and use it to lookup meta data within the Acousticid service.
# See https://beets.readthedocs.io/en/stable/plugins/chroma.html
chroma:
auto: true
# Ensures each track has a genre assigned.
# Uses the lastgenre and xtractor plugins.
# See https://github.com/mgoltzsche/beets-autogenre
# Usage: beet autogenre [options] [item_selector]
autogenre:
pretend: false
all: false
force: false
lastgenre: true
xtractor: true
remix_title: true
parent_genres: true
# Fetches genres tags from last.fm and assigns them to tracks.
# See https://beets.readthedocs.io/en/stable/plugins/lastgenre.html
lastgenre:
auto: false
prefer_specific: true
count: 4 # To also tag Rage Again the Machine as Hip Hop
# Last.fm has more accurate and complete data for source=album than for source=track:
# * source=album tags Yussef Kamaal's Black Focus Album as "Broken Beat" instead of "Jazz Fusion".
# * source=track tags Bellaire, Tour de Manege and Jamiroquai as Jazz.
source: album
# min_weight of last.fm tags
# 15% to prevent Amadou & Mariam from being tagged as New Wave
min_weight: 15
canonical: /etc/beets/genre-tree.yaml
# This files picks some of the genres defined in the canonical tree.
# The genres listed in this files must be aligned with the playlist queries.
whitelist: /data/beets/genres.txt
# Skip files during import using pre-configured criteria.
# See https://beets.readthedocs.io/en/stable/plugins/ihate.html
ihate:
warn:
- artist:rnb
skip:
- genre:Comedy
- artist::^Adele$
- artist::^AYLIVA$
- artist::^Sia$
# Convert audio files.
# See https://beets.readthedocs.io/en/stable/plugins/convert.html
convert:
never_convert_lossy_files: true # prevent quality from decreasing further
embed: false # don't embed album art
hardlink: false
#command: ffmpeg -i $source -y -vn -c:a copy -aq 2 $dest
#extension: m4a
# List duplicate tracks within the library.
# See https://beets.readthedocs.io/en/stable/plugins/duplicates.html
# Example: beet duplicates -f 2000 | spark
duplicates:
delete: false
# Normalize the audio playback level.
# See https://beets.readthedocs.io/en/stable/plugins/replaygain.html
# TODO: enable when alpine supports mp3gain, see https://pkgs.alpinelinux.org/packages?name=mp3gain
#replaygain:
# auto: true
# backend: gstreamer
# Add BPM metadata to tracks by tapping.
# See https://beets.readthedocs.io/en/stable/plugins/bpm.html
bpm:
max_strokes: 3
overwrite: true
# Allows to play tracks also during import.
# See https://beets.readthedocs.io/en/stable/plugins/play.html
# Example: beet play House --args=--shuffle
play:
# Using mpv instead of ffplay since the latter does not support seeking when display disabled.
#command: ffplay -autoexit -nodisp
command: play-playlist
# Generate playlists from music library queries.
# See https://beets.readthedocs.io/en/stable/plugins/smartplaylist.html
# Please make sure to query only genres configured within lastgenre whitelist.
# Example: beet splupdate
smartplaylist:
auto: false
output: extm3u
fields: [id]
playlist_dir: /data/playlists
relative_to: /data/playlists
playlists:
- name: all.m3u
query: ''
- name: all-by-album-genre.m3u
query: 'albumartist+ year+ album+ disc+ track+ genre+ artist+ title+'
- name: jazz-blues.m3u
query:
- genre::^Jazz
- genre::^Blues
- genre:'Jazz Fusion'
- genre:'Swing Jazz'
- name: reggae.m3u
query:
- genres:Reggae
- genres::'^Dub$'
- genres:Ska
- name: dub.m3u
query:
- genre::'^Dub$'
- name: ambient.m3u
query:
- genre:Ambient
- name: chillout.m3u
query:
- genre:Ambient
- genre:Downtempo
- genre:'Nu Jazz'
- genre:'Trip Hop'
- genre:Electronica
- genre::'^Electro$'
- genre:'Easy Listening'
- name: idm.m3u
query:
- genre:Idm
- genre:Breakcore
- name: downtempo.m3u
query:
- genre:Downtempo
- genre:'Nu Jazz'
- name: nu-jazz.m3u
query:
- genre:'Nu Jazz'
- name: world-music.m3u
query:
- genre:Blues
- genres:African
- genres:Afrobeat
- genres:'Rhythm And Blues'
- genres::'(^|, )Funk(,|$)'
- genres::'(^|, )Soul(,|$)'
- genres:'Caribbean And Latin American'
- genre:Brazilian
- genre:Balkan
- genre:Klezmer
- genres:'East European'
- name: african.m3u
query:
- genres:African
- genres:Afrobeat
- name: afrobeat.m3u
query:
- genres:Afrobeat
- name: balkan-klezmer.m3u
query:
- genre:'East European'
- genre:Balkan
- genre:Klezmer
- name: classical.m3u
query:
- genre:Classical
- name: dnb.m3u
query:
- genres:'Drum And Bass'
- genre:Breakbeat
- genre:Jungle
- genre:Neurofunk
- genre:'Liquid Drum And Bass'
- genre:'Ragga Drum And Bass'
- name: neurofunk.m3u
query:
- genre:Neurofunk
- name: jungle.m3u
query:
- genre:Jungle
- name: uk-garage.m3u
query:
- genres:'Uk Garage'
- genres:Dubstep
- genre:Grime
- name: dubstep-grime.m3u
query:
- genre:'Dark Dubstep'
- genre:Dubstep bpm:0..90
- genre:Grime
- name: electronic.m3u
query:
- genres:Electronic
- name: house-techno.m3u
query:
- genre:House
- genre:Techno
- genre:Minimal
- genre:Progressive
- name: deep-house.m3u
query:
- genre:'Deep House'
- genre:'Slow House'
- genre:'Nu Jazz' genres:House # includes Bellaire and MEUTE
- name: house.m3u
query:
- genre:House
- genre:'Slow House'
- genre:'Nu Jazz' genres:House
- name: tech-house-minimal.m3u
query:
- genre:'Tech House'
- genre:Minimal
- name: techno.m3u
query:
- genre:Techno
- genre:Minimal
- name: minimal.m3u
query:
- genre:Minimal
- name: trance.m3u
query:
- genre:Trance
- name: goa.m3u
query:
- genre:'Goa Trance'
- name: ska.m3u
query:
- genre:Ska
- name: rock.m3u
query:
- genre::'^Rock'
- genre::'^New Wave'
- genre::'^Folk'
- genre:'Fun Metal'
- name: punk-rock.m3u
query:
- genre:Punk
- genre:'Fun Metal'
- name: pop.m3u
query:
- genre:Pop
- genre:'New Wave'
- genre:'Balkan Beats'
- genre::'^Electro$'
- genres::'^Electronic Rock, (?!Drum And Bass)'
- name: hiphop.m3u
query:
- genre:'Hip Hop'
- name: 'liked/1 or more.m3u'
query: 'play_count:1..'
- name: 'liked/5 or more.m3u'
query: 'play_count:5..'
- name: 'liked/loved.m3u'
query: 'loved:1'
- name: 'latest/last day.m3u'
query: 'added- added:-1d..'
- name: 'latest/last 3 days.m3u'
query: 'added- added:-3d..'
- name: 'latest/last 7 days.m3u'
query: 'added- added:-7d..'
- name: 'latest/last 14 days.m3u'
query: 'added- added:-14d..'
- name: 'latest/last 30 days.m3u'
query: 'added- added:-30d..'
- name: 'latest/last 60 days.m3u'
query: 'added- added:-60d..'