I use mp3tag for my HUGE audiobook collection
at the moment I do the following steps 1 at a time:
tag track #s
rename file according to directory (track # - directory)
get tag values from file name (title, author, album(series name) etc)
change title to "title - track #"
I think i can do this all in one step using "actions" but i cannot figure out how to handle the fact that in mass processing, some books have album values (series name) while others are "stand alone" books
I am afraid that without any concrete examples for each variation it is very hard to help as very often a single dot or blank in an action make all the difference.
I assume that all information is somewhere in the filename, right (why isn't it in the tags straight away? Filenames are only for dumb players that do not look at the tags).
Also I fear that you first name the files and then extract the information to fill the tags. I would recommend to do it the other way round.
Now, down to the other business.
I think that an action of the type "Guess value" would cater for most of your steps in one go:
Create a new action group for the standalone books
first action:
"Guess value"
select the field %_filename%
enter as mask
%track% - %Artist% - %Title%
second action:
Format tag field: Title
Value:
%title% $num(%track%,3)
do a similar thing for the books of a series.
First action like the first above but with a modified mask:
%track% - %Artist% - %album% - %Title%
or if you want to have series and title in the same field then the mask looks just like this:
%track% - %Artist% - %Title% - %Title%
second action like the second action for standalone books.
Is this, what you wanted?
Another general note: data structures that use implicit fields coded by their position always collapse if that position is not filled.
In your case a structure
Series Standalone
1: Number 1: Number
2: Artist 2: Artist
3: Series
4: Title 3: Title
falls one piece of the data short if position 3 is not filled.
So you either have to fill this position or treat the structure with a different procedure.
Create a Action Group (FAQs: Actions ) with the following:
tag track #s
Action: Format Value
Field: TRACK
Formatstring: %_counter%
(this can't reset the tracknumber for every folder. if this function is needed, you have to put this out for the actiongroup and use the Track Number Wizard, which can't be used as part of a action group)
rename file according to directory (track # - directory)
Action: Format Value
Field: _FILENAME
Formatstring: %track% - %_directory%
get tag values from file name (title, author, album(series name) etc)
Action: Guess Values
Source Format: $if($eql($regexp($regexp(%_filename%,.?( - ).?,$1),(.* - ).,$1), - - ),$regexp(%_filename%,(.) - (.*),$1 - - $2),%_filename%)Guessing Pattern: %track% - %artist% - %album% - %title%
change title to "title - track #"
Action: Format Value
Field: TITLE
Formatstring: %title% - %track%
edit:
step 3 adjusted according the discussion below
Is the sequence of step 2 and 3 correct?
If so ... does it mean, that ... "tag values from file name (title, author, album(series name) etc)"
... are part of the directory name?
That sounds rather confusing. You should check your procedure.
For working on files with different structure of the file name it is recommended to simply use the Mp3tag Filter.
This filter expression reduces the amount of files in the list view to those files which are constructed of 3 parts divided by 2 times ' - ', that means the filter expression detects the number of delimiter strings.
"$div($sub($len(%_filename%),$len($replace(%_filename%,' - ',))),$len(' - '))" IS 2
This filter expression reduces the amount of files in the list view to those files which are constructed of 4 parts divided by 3 times ' - ', that means the filter expression detects the number of delimiter strings.
"$div($sub($len(%_filename%),$len($replace(%_filename%,' - ',))),$len(' - '))" IS 3
If you like to put the importance on the parts, then you can modify the filter expression to detect the number of value parts, in this case 4 parts.
"$add(1,$div($sub($len(%_filename%),$len($replace(%_filename%,' - ',))),$len(' - ')))" IS 4
I have to do it that way because most of the time the mp3 do not come with tag values i want/find useful, and the file names are the same
so i rename the folder as "'Author' - 'Series' # - 'Title'" then do from there
so what you are saying is that i can create action group to apply filter to use only those with 2 parts in filename, do everything i want
then apply filter to use files with 3 parts, etc?
Do you know that you can create user defined tag fields as you wish? ... and remove ... and use for all the things you want to do? You can use tag fields like temporary variables. You do not have to misuse folder names to store data. The filesystem does not support all characters and so there is loss of spelling accuracy to be expected.
Yes, divide and conquer, that's the strategy.
The filter is part of the interactive interface of Mp3tag, the actions are part of the batch automatiion interface of Mp3tag. Both together makes tagging life easy.
i can figure out how to use the filters from the other guy in actions so i tried yours
it worked except for the TITLEs, it gets the track, artist, album, but does not get the title
from either the files with "track - artist - title.mp3"
or the ones that are "track - artist - album - title.mp3"
any ideas?