about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--docs/tools.org39
-rw-r--r--home/profiles/nas.nix58
-rw-r--r--home/profiles/workstation.nix5
3 files changed, 87 insertions, 15 deletions
diff --git a/docs/tools.org b/docs/tools.org
index 8dfebe1..e093f5c 100644
--- a/docs/tools.org
+++ b/docs/tools.org
@@ -126,3 +126,42 @@ json
 #+end_src
 
 and to run it: =exiftool -@ use_json.args <takeout_dir>=
+* beet
+=beet= is a media library management system for music. The main documentation is [[https://beets.readthedocs.io/en/latest/index.html][here]].
+** search
+By album
+#+begin_src shell
+tahoe:~ beet ls album:henry
+Nick Cave & the Bad Seeds - Henry’s Dream - Papa Won’t Leave You, Henry
+Nick Cave & the Bad Seeds - Henry’s Dream - I Had a Dream, Joe
+Nick Cave & the Bad Seeds - Henry’s Dream - Straight to You
+Nick Cave & the Bad Seeds - Henry’s Dream - Brother, My Cup Is Empty
+Nick Cave & the Bad Seeds - Henry’s Dream - Christina the Astonishing
+Nick Cave & the Bad Seeds - Henry’s Dream - When I First Came to Town
+Nick Cave & the Bad Seeds - Henry’s Dream - John Finn’s Wife
+Nick Cave & the Bad Seeds - Henry’s Dream - Loom of the Land
+Nick Cave & the Bad Seeds - Henry’s Dream - Jack the Ripper
+#+end_src
+
+All the albums from 2023
+#+begin_src shell
+tahoe:~ beet ls year:2023 -a
+ALL HANDS_MAKE LIGHT - "Darling the Dawn"
+Big ‡ Brave - Nature Morte
+boygenius - the record
+Ky - Power Is The Pharmacy
+OM - Gebel Barkal / Version
+Joni Void - Everyday Is The Song
+#+end_src
+** Update
+Modify the year for an album:
+#+begin_src shell
+tahoe:~ beet modify path:/data/fast/music/Nick\ Cave\ \&\ the\ Bad\ Seeds/B-Sides\ \&\ Rarities,\ Part\ I year=2005
+Modifying 56 items.
+Nick Cave & Dirty Three - B-Sides & Rarities, Part I - Time Jesum Transeuntum et Non Riverentum
+  year: 2021 -> 2005
+Nick Cave & Shane MacGowan - B-Sides & Rarities, Part I - What a Wonderful World
+  year: 2021 -> 2005
+...
+Really modify, move and write tags? (Yes/no/select) yes
+#+end_src
diff --git a/home/profiles/nas.nix b/home/profiles/nas.nix
index c1e5ca9..d23f60b 100644
--- a/home/profiles/nas.nix
+++ b/home/profiles/nas.nix
@@ -4,15 +4,11 @@ let
     name = "bc-to-beet";
     runtimeInputs = [ pkgs.beets ];
     text = ''
-      ALBUM_PATH="$1"
-      ALBUM_NAME=$(basename "$ALBUM_PATH")
-
-      mkdir -p ~/import
-      rm -rf ~/import/tmp-bc
-      unzip -d ~/import/tmp-bc ~/import/album.zip
-      beet import ~/import/tmp-bc
-      rm -rf ~/import/tmp-bc
-      rm -rf ~/import/album.zip
+      rm -rf ~/import/music/tmp-bc
+      unzip -d ~/import/music/tmp-bc ~/import/music/album.zip
+      beet import ~/import/music/tmp-bc
+      rm -rf ~/import/music/tmp-bc
+      rm -rf ~/import/music/album.zip
     '';
   };
 in
@@ -26,15 +22,51 @@ in
     flac
     abcde
     (pkgs.writers.writeDashBin "rip-flac" ''
-      cd ~/import
-      ${pkgs.abcde}/bin/abcde -Vx -G -a "cddb,read,encode,tag,move,clean" -o flac
+      ${pkgs.abcde}/bin/abcde -c ~/.config/abcde/config
     '')
   ];
 
+  # configuration file for abcde (see man 1 abcde)
+  xdg.configFile."abcde/config".source = pkgs.writeText "config" ''
+    ACTIONS=default,getalbumart
+
+    ALBUMARTFILE="cover.jpg"
+    ALBUMARTTYPE="JPG"
+
+    CDDBMETHOD=musicbrainz
+
+    # cd ripping program
+    CDROMREADERSYNTAX=cdparanoia
+    CDPARANOIA=cdparanoia
+    CDPARANOIAOPTS="--never-skip=10"
+
+    # move here
+    OUTPUTDIR="$HOME/import/music"
+
+    # output type
+    FLACENCODERSYNTAX=flac
+    OUTPUTTYPE=flac
+    FLAC=flac
+    #  --best is the same as -8 (highest compression) (also see -e)
+    FLACOPTS='--verify --best'
+
+    EXTRAVERBOSE=2
+    EJECTCD=y
+    MAXPROCS=4
+
+    post_encode ()
+    {
+      # beets fixes some things (e.g. moving multi-disc albums together) and
+      # adds some extra info (e.g. genres with lastgenre)
+      echo "-------------- beets:"
+      beet import "$HOME/import/music"
+    }
+  '';
+
   programs.beets = {
     enable = true;
     settings = {
-      directory = cfg.musicDirectory;
+      directory = "/data/fast/music";
       plugins =
         "fromfilename discogs duplicates fetchart embedart badfiles lastgenre scrub";
       paths = {
@@ -44,7 +76,7 @@ in
         "albumtype:soundtrack" = "Soundtracks/$album ($year)/$track $title";
       };
       import = {
-        copy = true;
+        copy = false;
         move = true;
       };
       va_name = "Various Artists";
diff --git a/home/profiles/workstation.nix b/home/profiles/workstation.nix
index e33db2d..74c927f 100644
--- a/home/profiles/workstation.nix
+++ b/home/profiles/workstation.nix
@@ -23,8 +23,9 @@ let
 
       NAS=$(tailscale status --json | jq -r '.Peer | map(select(.HostName == "tahoe"))[0].TailscaleIPs[0]')
 
-      scp "$ALBUM_PATH" "$NAS:~/import/album.zip"
-      ssh "$NAS" bc-to-beet ~/import/album.zip
+      ssh "$NAS" mkdir -p ~/import/music
+      scp "$ALBUM_PATH" "$NAS:~/import/music/album.zip"
+      ssh "$NAS" bc-to-beet ~/import/music/album.zip
     '';
   };
 in