Moving compilations with certain genres into the soundtracks folder?

My code:

# Move compilations from comp folder to soundtracks if a soundtrack
album_fields:
    grouped: 1 if genre in ("Anime Soundrack", "Soundtrack") or albumtype == 'soundtrack' else 0

albumtype_soundtrack: '_Soundtracks/%if{$grouped, %the{$grouping}}/[%if{$year,$year,0000}] $album %aunique{}/%if{$multidisc,Disc $disc/$disc-}$track. $title'

I can’t get the grouped field to do what I want. I was hoping that when I did beet update or beet move, they would use the genres I added in post and move to the appropriate folder(s).

Example: I tag an album with the “grouping” Naruto and the “genre” Anime Soundtrack. Upon move or update or w/e, this album should go into the _Soundtracks folder and into a Naruto folder. But nothing happens. I can’t even get most of my soundtrack albums to go to the _Soundtracks folder :frowning: and I used the order of precedence so that comps are placed if an album isn’t a soundtrack.

Nothing looks out of sorts from here. Do the fields seem to work with the list command?

What’s your paths configuration like? (Is that last line indented under it?)

That’s my soundtracks path, second only to the default path (order of precedence and all).

default: '%bucket{%upper{%left{%the{$albumartist},1}}}/%the{$albumartist}/[%if{$year,$year,0000}] $album %aunique{}/%if{$multidisc,Disc $disc/$disc-}$track. $title'

albumtype_soundtrack: '_Soundtracks/%if{$grouped, %the{$grouping}}/[%if{$year,$year,0000}] $album %aunique{}/%if{$multidisc,Disc $disc/$disc-}$track. $title'

comp: '_Compilations/%if{$grouped, %the{$grouping}}/[%if{$year,$year,0000}] $album %aunique{}/%if{$multidisc,Disc $disc/$disc-}$track. $title'

singleton: _Singletons/%the{$artist}/$title

[Misunderstood what you meant, so I removed the chunk of text related to that misunderstanding]

You meant something like beet list $grouping or beet list $grouped, right? Yes, they populate the appropriate entries.

Hmm—I still can’t quite tell from this listing: are all of those indented under the paths: section? As in the example in the docs:
http://docs.beets.io/en/v1.4.7/reference/config.html#path-format-configuration

Yes, they are. Config below:

lyrics:
    bing_lang_from: []
    auto: yes
    fallback: ''
    force: no
    genius_api_key: REDACTED
    google_engine_ID: REDACTED
    sources:
    - google
    - lyricwiki
    - musixmatch
    - genius
    bing_lang_to:
    bing_client_secret: REDACTED
    google_API_key: REDACTED
    local: no
verbose: 0
asciify_paths: no
max_filename_length: 0
library: beets_library.db

replace:
    '[\\/]': ''
    ^\.: _
    \.$: _
    '[\x00-\x1f]': _
    '[<>"\*\|]': _
    \s+$: ''
    ^\s+: ''
    '[\?]': ''
    '[\*]': ''
    '[\.]{3}$': ''
    '[\:]': ''
original_date: no
ftintitle:
    auto: yes
    format: feat. {0}
    drop: no

clutter:
- Thumbs.DB
- .DS_Store
- '*.m3u'
- '*.html'
- '*.htm'
copyartifacts:
    extensions: .cue .log .jpg .png
    print_ignored: yes

plugins:
- discogs
- fromfilename
- edit
- embedart
- fetchart
- ftintitle
- lastgenre
- lyrics
- metasync
- scrub
- mbsync
- bucket
- inline
- the
- badfiles
- copyartifacts
- duplicates
- info
- missing
ignore_hidden: yes

paths:
    default: '%bucket{%upper{%left{%the{$albumartist},1}}}/%the{$albumartist}/[%if{$year,$year,0000}] $album %aunique{}/%if{$multidisc,Disc $disc/$disc-}$track. $title'
    albumtype_soundtrack: _Soundtracks/%if{$grouped, %the{$grouping}}/[%if{$year,$year,0000}] $album %aunique{}/%if{$multidisc,Disc $disc/$disc-}$track. $title
    comp: _Compilations/%if{$grouped, %the{$grouping}}/[%if{$year,$year,0000}] $album %aunique{}/%if{$multidisc,Disc $disc/$disc-}$track. $title
    singleton: _Singltons/%the{$artist}/$title
    ext:log: $albumpath/Extras/$artist - %asciify{$album}
    ext:cue: $albumpath/Extras/$artist - %asciify{$album}
    ext:jpg: $albumpath/Extras/%asciify{albumart_$album}
    ext:png: $albumpath/Extras/%asciify{albumart_$album}

format_item: $artist - $album - $title
sort_case_insensitive: yes
art_filename: '%asciify{albumart_$album}'
missing:
    format: $albumartist - $album - $track - $title
    count: no
    total: no
    album: no
format_album: $albumartist - $album
lastgenre:
    auto: yes
    fallback: ''
    source: artist
    count: 1
    prefer_specific: no
    force: yes
    min_weight: 10
    whitelist: yes
    separator: ', '
    canonical: no
path_sep_replace: _

import:
    log: ~/beets-import.log
    write: yes
    copy: yes
    group_albums: yes
    pretend: no
    search_ids: []
    duplicate_action: ask
    bell: yes
    set_fields: {}
    autotag: yes
    timid: yes
    resume: ask
    incremental: no
    incremental_skip_later: no
    quiet_fallback: skip
    none_rec_action: ask
    default_action: apply
    singletons: no
    languages: []
    detail: no
    flat: no

sort_album: albumartist+ album+

match:
    strong_rec_thresh: 0.04
    medium_rec_thresh: 0.25
    rec_gap_thresh: 0.25
    max_rec:
        missing_tracks: medium
        unmatched_tracks: medium
    distance_weights:
        source: 2.0
        artist: 3.0
        album: 3.0
        media: 1.0
        mediums: 1.0
        year: 1.0
        country: 0.5
        label: 0.5
        catalognum: 0.5
        albumdisambig: 0.5
        album_id: 5.0
        tracks: 2.0
        missing_tracks: 0.9
        unmatched_tracks: 0.6
        track_title: 3.0
        track_artist: 2.0
        track_index: 1.0
        track_length: 2.0
        track_id: 5.0
    preferred:
        countries: []
        media: []
        original_year: no
    ignored: []
    required: []
    track_length_grace: 10
    track_length_max: 30
scrub:
    auto: no
artist_credit: no
fetchart:
    auto: yes
    minwidth: 500
    maxwidth: 1000
    cautious: yes
    cover_names: cover folder album front
    sources: filesystem coverart amazon itunes albumart
    google_engine: 001452825323518960753:hrh5ch1gjzm
    enforce_ratio: no
    store_source: no
    google_key: REDACTED
    fanarttv_key: REDACTED
embedart:
    auto: yes
    compare_threshold: 0
    ifempty: no
    remove_art_file: no
    maxwidth: 0
time_format: '%Y-%m-%d %H:%M:%S'
pluginpath: [~\AppData\Roaming\beets\beetsplug]
item_fields:
    multidisc: 1 if disctotal > 1 else 0
sort_item: artist+ album+ disc+ track+
threaded: yes
va_name: Various Artists
per_disc_numbering: yes
id3v23: yes
bucket:
    bucket_alpha:
    - 0-9
    - A-D
    - E-H
    - I-L
    - M-P
    - Q-U
    - V-Z
    bucket_year: []
    extrapolate: no
    bucket_alpha_regex: {}
ignore:
- .*
- '*~'
- System Volume Information
- lost+found
- .DS_Store
- desktop.ini
- AlbumArtSmall.jpg
- AlbumArt_*_Small.jpg
album_fields:
    grouped: 1 if genre in ("Anime Soundrack", "Soundtrack") or albumtype == 'soundtrack' else 0

ui:
    terminal_width: 80
    length_diff_thresh: 10.0
    color: yes
timeout: 5.0
directory: ~/Music
format_raw_length: no
the:
    a: yes
    patterns: []
    the: yes
    strip: no
    format: '{0}, {1}'
pathfields: {}
discogs:
    tokenfile: discogs_token.json
    user_token: REDACTED
    apikey: REDACTED
    apisecret: REDACTED
    source_weight: 0.5
duplicates:
    count: no
    full: no
    format: ''
    keys: []
    move: ''
    tag: ''
    path: no
    copy: ''
    tiebreak: {}
    album: no
    strict: no
    checksum: ''
    merge: no
    delete: no
edit:
    itemfields: track title artist album
    albumfields: album albumartist
    ignore_fields: id path

I see; thanks!

It would be useful to break down your configuration one step at a time to see which piece is going wrong. Start with the $grouped field to see if it seems to have the right value; then use it in an %if to see if that works too, then use it in the real expression you want. Separately, try using the albumtype_soundtrack key without the path formatting instructions you want. Using this process of elimination, you can find out exactly which piece needs fixing.

I only attempted the $grouped value query as of now. Here are my results (along with some other queries):

Reminder of relevant line in config:

album_fields:
    grouped: 1 if genre in ("Anime Soundrack", "Soundtrack") or albumtype == 'soundtrack' else 0
PS C:\Users\user1> beet ls -af '$album: $grouped' NANA
NANA 707 Soundtracks: 0
NANA 7to8 soundtracks: 0

PS C:\Users\user1> beet ls -af '$album: $grouping' NANA
NANA 707 Soundtracks: $grouping
NANA 7to8 soundtracks: $grouping

PS C:\Users\user1> beet ls -af '$album: $genre' NANA
NANA 707 Soundtracks: Anime Soundtrack
NANA 7to8 soundtracks: Anime Soundtrack

-------------------

PS C:\Users\user1> beet ls -af '$album: $grouped' Violet Evergarden
Violet Evergarden Vocal Album Song Letters: 1

PS C:\Users\user1> beet ls -af '$album: $grouping' Violet Evergarden
Violet Evergarden Vocal Album Song Letters: $grouping

-------------------

PS C:\Users\user1> beet ls -af '$album: $grouped'
juice: 0
Bokura no Ekisu (ボクらのエキス): 0
Buritora Golden Best: 0
MADE IN ABYSS ORIGINAL SOUNDTRACK: 1
Supernatural: 0
Time to Say Goodbye: 0
Hot Shot: 0
Ocean of Love (愛像大海): 0
Permission To Land: 0
Hibana: 0
NANA 707 Soundtracks: 0
NANA 7to8 soundtracks: 0
Violet Evergarden Vocal Album Song Letters: 1

-------------------

PS C:\Users\user1> beet ls -af '$album: $grouping'
Bokura no Ekisu (ボクらのエキス): $grouping
Buritora Golden Best: $grouping
MADE IN ABYSS ORIGINAL SOUNDTRACK: $grouping
Supernatural: $grouping
Time to Say Goodbye: $grouping
Hot Shot: $grouping
Ocean of Love (愛像大海): $grouping
Permission To Land: $grouping
Hibana: $grouping
NANA 707 Soundtracks: $grouping
NANA 7to8 soundtracks: $grouping
Violet Evergarden Vocal Album Song Letters: $grouping

-------------------

PS C:\Users\user1> beet ls -af '$album: $genre'
Bokura no Ekisu (ボクらのエキス): J-Pop; Parody; Comedy
Buritora Golden Best: J-Pop; Parody; Comedy
MADE IN ABYSS ORIGINAL SOUNDTRACK: Anime Soundtrack
Supernatural: Rock
Time to Say Goodbye: Operatic Pop
Hot Shot: Reggae
Ocean of Love (愛像大海): C-Pop
Permission To Land: Rock
Hibana: J-Rock
NANA 707 Soundtracks: Anime Soundtrack
NANA 7to8 soundtracks: Anime Soundtrack
Violet Evergarden Vocal Album Song Letters: Anime Soundtrack


PS C:\Users\user1> beet ls -af '$album: $albumtype'
Bokura no Ekisu (ボクらのエキス):
Buritora Golden Best:
Supernatural:
Time to Say Goodbye:
Hot Shot:
Ocean of Love (愛像大海):
Permission To Land:
Hibana: single
NANA 707 Soundtracks:
NANA 7to8 soundtracks:
Violet Evergarden Vocal Album Song Letters: soundtrack

Why would my $grouping be populated with the word $grouping?

That just indicates that that field is unset. Grouping is a track-level field, not an album-level field. You can get a list showing this using beet fields.

Then, how about this:

Creating a new album-level field fandom

album_fields:
    grouped: 1 if genre in ("Anime Soundtrack", "Soundtrack") or albumtype == 'soundtrack' else 0
    fandom: return grouping if grouping != ''

albumtype_soundtrack: '_Soundtracks/%if{$grouped, %the{$fandom}}/[%if{$year,$year,0000}] $album %aunique{}/%if{$multidisc,Disc $disc/$disc-}$track. $title'