# Paths' Template: Documentation not Sufficiently Thorough ... or Need Rest

**URL:** <https://discourse.beets.io/t/paths-template-documentation-not-sufficiently-thorough-or-need-rest/1123>\
**Category:** Help\
**Created:** [February 24, 2020, 3:02am UTC](https://discourse.beets.io/t/paths-template-documentation-not-sufficiently-thorough-or-need-rest/1123 "2020-02-24T03:02:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Zemi](https://avatars.discourse-cdn.com/v4/letter/z/a8b319/32.png) [@Zemi](https://discourse.beets.io/u/Zemi)\
**Post date:** [February 24, 2020, 3:02am UTC](https://discourse.beets.io/t/paths-template-documentation-not-sufficiently-thorough-or-need-rest/1123/1 "2020-02-24T03:02:21Z")

</div>

Sought to become a music geek myself some 4yrs. ago, discovering `puddletag`. Fit the bill, reliable selection of features. Come last year, Qt4 is deprecated, `puddletag`'s Qt5 port is _highly_ unstable; media tumor needs a new host yesterday, enter `beet`.

Sparing all high praises, it’s a pain in the ass almost literally. Spending an entire afternoon _RTFM_ would give an assless-chap a run for their hams. It’s 7:00PM local time and an error-less configuration is born!

```
directory: ~/Vegetables
library: ~/data/beet/testinglibrary.db
log: ~/data/beet/testinglibrary.log
paths:
    title: %title{$title}
    artist: %title{$artist}
    album: %title{$album}
import:
    copy: no
    autotag: no
    resume: ask
    duplicate_action: ask
    bell: yes
    set_fields:
            genre: 'Yams'
ignore_hidden: yes
replace:
    '[\\/]': _
    '^\.': _
    '[\x00-\x1f]': _
    '[<>:"\?\*\|]': _
    '\.$': _
    '\s+$': ''
    '^\s+': ''
    '^-': _
asciify_paths: yes
threaded: yes
sort_item: artist+ album+ title+ genre+
sort_album: artist+ album+
sort_case_insensitive: yes
original_date: no
ui:
    color: yes
    colors:
            text_success: green
            text_warning: yellow
            text_error: red
            text_highlight: red
            text_highlight_minor: lightgray
            action_default: blue
            action: turquoise

```

* * *

Set some redundant _defaults_ in writing to play with later. Though I would first need to overcome (`paths:`) “_Templates_”. I am not interested in _MusicBrainz_, lyrics or cover art; my library needs are basic. Some ASCIIfication, decluttering of troublesome characters, and much needed _Title Casing_ (for now).

It’s almost midnight and my configuration is a lie. `album`, `artist`, and `title` tags remain borked. My understanding of regexp is toothless, my experience with python nonexistent; Please help me, done a poor job scouring the web for answers.

---

<div class="post-metadata">

**Author:** ![jakabadambalazs](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.beets.io/jakabadambalazs/32/360_2.png) [@jakabadambalazs](https://discourse.beets.io/u/jakabadambalazs)\
**Post date:** [February 24, 2020, 7:13am UTC](https://discourse.beets.io/t/paths-template-documentation-not-sufficiently-thorough-or-need-rest/1123/2 "2020-02-24T07:13:26Z")

</div>

> [@Zemi](#):
>
> paths: title: %title{$title} artist: %title{$artist} album: %title{$album}

Hi @Zemi! Changing software is always a pain in the ass. It is disruptive and always comes at a bad time. 🌧 But I’m sure once you overcome the initial frustration you will enjoy beets.  
Your `paths` section does not look right. Here are the two resources you need to referer to:  
[https://beets.readthedocs.io/en/latest/reference/config.html#path-format-configuration](https://beets.readthedocs.io/en/latest/reference/config.html#path-format-configuration)  
and  
[https://beets.readthedocs.io/en/latest/reference/pathformat.html](https://beets.readthedocs.io/en/latest/reference/pathformat.html)

This is the defaults and the keys (default, singleton and comp) need to stay.

```yml
paths:
    default: $albumartist/$album%aunique{}/$track $title
    singleton: Non-Album/$artist/$title
    comp: Compilations/$album%aunique{}/$track $title

```

Start with the default key. This defines how your files will be stored under your ~/Vegetables 😂 folder. It defines the path and the file name. Within this key, if you want to Title Case your song’s path and file name you can do:

```yml
default: %title{$albumartist}/%title{$album}%aunique{}/$track %title{$title}

```

After you change the paths, you can just use the move command `beet move` to move your imported files around and rename them.

I hope this helps.

---

<div class="post-metadata">

**Author:** ![Zemi](https://avatars.discourse-cdn.com/v4/letter/z/a8b319/32.png) [@Zemi](https://discourse.beets.io/u/Zemi)\
**Post date:** [February 24, 2020, 6:11pm UTC](https://discourse.beets.io/t/paths-template-documentation-not-sufficiently-thorough-or-need-rest/1123/3 "2020-02-24T18:11:18Z")

</div>

> [@jakabadambalazs](#):
>
> Your `paths` section does not look right. Here are the two resources you need to referer to:  
> [Configuration — beets](https://beets.readthedocs.io/en/latest/reference/config.html#path-format-configuration)  
> and  
> [Path Formats — beets](https://beets.readthedocs.io/en/latest/reference/pathformat.html)

Hello there @jakabadambalazs (Adam?)! Thank you for taking the time to respond. 😅 👍

Huh, remember reading both sections and thinking _“What if my paths aren’t setup that way?”_. What’s a user to do if all they want is to have all files and folders _Title Cased_, recursively?

> [@jakabadambalazs](#):
>
> This is the defaults and the keys (default, singleton and comp) need to stay.
> 
> ```auto
> paths:
> default: $albumartist/$album%aunique{}/$track $title
> singleton: Non-Album/$artist/$title
> comp: Compilations/$album%aunique{}/$track $title
> 
> ```

My mistake, I thought that by not specifying a “_key_”, `beet` would operate unconditionally. 🤯

> [@jakabadambalazs](#):
>
> Start with the default key. This defines how your files will be stored under your ~/Vegetables 😂 folder. It defines the path and the file name. Within this key, if you want to Title Case your song’s path and file name you can do:
> 
> ```auto
> default: %title{$albumartist}/%title{$album}%aunique{}/$track %title{$title}
> 
> ```

The files and directories in `/Vegetables` should remain unmoved.

> [@Zemi](#):
>
> ```auto
> import: 
> copy: no
> 
> ```

Acording to the manual, it prevents `beet` from moving my `/Vegetables` around. 🤣

> [@jakabadambalazs](#):
>
> ```auto
> $track %title{$title}
> 
> ```

I’d like for it to _Title Case_ `album`, `artist`, and `title` tags. `$track` introduces track number, which doesn’t apply in my case. The rest affects _only_ the `title` tag, not lost so far. However ( 😁 ), file name(s) would be:

`Example Title For Some Song.flac`

When my intention was for every file name to include `artist - title` (separated by a “-”) like this:

`Artist Name Jr. - Example Title For Some Song.flac` \<— Existing naming scheme in `puddletag`.

Here’s my shot at geting it right, correct me if I’m wrong please:

```auto
default: %title{$artist} - %title{$title}

```

Still have no idea how to mutate (_i.e._ _Title Case_) `artist`, `album` and `title` tags unconditionally. 🤕 😭

---

<div class="post-metadata">

**Author:** ![jakabadambalazs](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.beets.io/jakabadambalazs/32/360_2.png) [@jakabadambalazs](https://discourse.beets.io/u/jakabadambalazs)\
**Post date:** [February 24, 2020, 10:21pm UTC](https://discourse.beets.io/t/paths-template-documentation-not-sufficiently-thorough-or-need-rest/1123/4 "2020-02-24T22:21:05Z")

</div>

Hi Zemi,  
Sorry, it is probably me who did not understand what you were trying to achieve in the first place.  
You trying to sort out your tags, not file and folder names, right? Then my response was useless to you.  
I am sure there is a way to do what you wan to achieve: i.e. CamelCasing your " `artist` , `album` and `title` tags unconditionally" but I do not know how.  
Anyone?

---

<div class="post-metadata">

**Author:** ![Zemi](https://avatars.discourse-cdn.com/v4/letter/z/a8b319/32.png) [@Zemi](https://discourse.beets.io/u/Zemi)\
**Post date:** [February 25, 2020, 10:03pm UTC](https://discourse.beets.io/t/paths-template-documentation-not-sufficiently-thorough-or-need-rest/1123/5 "2020-02-25T22:03:40Z")

</div>

> [@jakabadambalazs](#):
>
> Sorry, it is probably me who did not understand what you were trying to achieve in the first place.

Well, while in that note may as well take advantage of your knowhow (Thank you!) 😅

> [@jakabadambalazs](#):
>
> You trying to sort out your tags, not file and folder names, right?

Correct! 🤖 Streamline the tagging process first, tidy names later.

> [@jakabadambalazs](#):
>
> … Then my response was useless to you.

Not entirely, what exactly does `beet` do if not work with tags? Would your `paths` correction not affect their respective embedded tags (_i.e._ `artist`, `album` and `title`)?

Makes no sense for `beet` to _Title Case_ **only** file and folder names.

**EDIT:**

Assuming it’s structured correctly, let’s say I did it the _proper_ way:

```auto
paths: 
    default: $albumartist/$album%aunique{}/%title{$artist} - %title{$title} 
    singleton: Non-Album/$artist/%title{$artist} - %title{$title}
    comp: Compilations/$album%aunique{}/%title{$artist} - %title{$title}

```

Would `beet` then _Title Case_ `$artist` and `$title` tags, along with file and folder names?

Please, let me know if I’m doing a poor job at making sense.
