Filling in the Year field


#1

So, I've decided to dig in and automate as much of my regular tagging routine as possible through the Actions system, but this is where I've hit a bit of a snag:

I'm trying to add an action to fill/format the year field if necessary.
If year is set to four digits, I want to keep the tag.
If it is set to something longer (such as 2007-07-37) I want to just keep the first four chars
If it's blank, I want to guess the year based off the name of the directory the file is in.

What I've got so far is

$if(%year%, $left(%year%,4), <???>)

What I'm missing is the <???> bit where I WANT to have [12]\d{3} from %_directory%
Anyone see how I can make this happen? =)


#2

Please give an example of a real %_directory% contents. And tell us which data you want to cut from it.

PS: just a personal footnote:
How often does this happen that the year is not filled but can be found in the folder name? I'd say: once in the lifetime of a track. So is it worth it to have an action of its own instead of using a simple filter (%year% MISSING) and then a converter statement that shows the probable outcome?
The other question I cannot solve: how come that the folder has the correct year but the file has not? Usually I tag the files first and then create a folder structure so the file has always the correct year, the folder might not ...


#3

I can't find any instances right now of albums missing the year field but it does happen once in a while. The format of %_directory% could vary greatly, which is why I want to use a regular expression to extract any four digit sequence starting with a 1 or a 2 (1xxx or 2xxx).


#4

The reason why I ask: you gave as example

which has the backslash in it - which is usually part of a pathname. So it looks to me as though it is not a plain _DIRECTORY variable.
If you wand to extract a substring from a variable you can use one of the functions $left, $right or $mid. And to find a certain character you can use the $strstr function.
As this will lead to a rather longish term I still suggest that you do it with a filter and the converter Filename -Tag and something like
%dummy% - %year%\%dummy%.