aboutsummaryrefslogtreecommitdiffstats
path: root/modules/home/conf
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-08-10 23:31:27 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-08-10 23:31:27 +0200
commitf678531285bbabf73e0daa3952697cb877822986 (patch)
treeaf2d6fcdbe212aa79a830750a8939a3e8b26a266 /modules/home/conf
parentfeat(home/beets): Add further smartplaylists (integrating with `mpdstats`) (diff)
downloadnixos-config-f678531285bbabf73e0daa3952697cb877822986.zip
feat(home/beets): Place songs under the main artist directory
Diffstat (limited to 'modules/home/conf')
-rw-r--r--modules/home/conf/beets/default.nix44
1 files changed, 42 insertions, 2 deletions
diff --git a/modules/home/conf/beets/default.nix b/modules/home/conf/beets/default.nix
index de15a857..cafc5ccb 100644
--- a/modules/home/conf/beets/default.nix
+++ b/modules/home/conf/beets/default.nix
@@ -34,8 +34,8 @@
};
paths = {
- default = "$genre/$albumartist/$album/$track $title";
- singleton = "$genre/$artist/$title";
+ default = "$genre/$first_artist/$album/$track $title";
+ singleton = "$genre/$first_artist_singleton/$title";
comp = "$genre/$album/$track $title";
"albumtype:soundtrack" = "Soundtracks/$genre/$album/$track $title";
};
@@ -113,6 +113,43 @@
}
];
};
+ item_fields = {
+ # Taken from https://github.com/trapd00r/configs/blob/4f3dada5700846cca6c2869e6fa6b3c795b87b67/beets/config.yaml
+ first_artist =
+ /*
+ python
+ */
+ ''
+ # import an album to another artists directory, like:
+ # Tom Jones │1999│ Burning Down the House [Single, CD, FLAC]
+ # to The Cardigans/+singles/Tom Jones & the Cardigans │1999│ Burning Down the House [Single, CD, FLAC]
+ # https://github.com/beetbox/beets/discussions/4012#discussioncomment-1021414
+ # beet import --set myartist='The Cardigans'
+ # we must first check to see if myartist is defined, that is, given on
+ # import time, or we raise an NameError exception.
+ try:
+ myartist
+ except NameError
+ import re
+ return re.split(',|\\s+(feat(.?|uring)|&|(Vs|Ft).)', albumartist, 1, flags=re.IGNORECASE)[0]
+ else:
+ return myartist
+ '';
+
+ first_artist_singleton =
+ /*
+ python
+ */
+ ''
+ try:
+ myartist
+ except NameError:
+ import re
+ return re.split(',|\\s+(feat(.?|uring)|&|(Vs|Ft).)', artist, 1, flags=re.IGNORECASE)[0]
+ else:
+ return myartist
+ '';
+ };
# scrub = {
# auto = true;
# };
@@ -127,6 +164,9 @@
# Calculate replay gain
"replaygain"
+ # Alows to use inline python for parsing tags
+ "inline"
+
# Show tags on files/queries
"info"