Opus

There are a lot of different tags, some of them even take classical music in to account.

But no tag for the opus.
WMP has a tag called SubTitle, let’s use this for the opus.
Next question: how to avoid manual typing the opus in each movement?

Open the songs in MP3Tag:

All my classical music is organized by composition.
All compositions are labeled the same way: Composer – Work – Performer
Each work has the opus number at the end.

This is the script:
$if(%subtitle%,%subtitle%,$mid(%album%,$strstr($lower(%album%),' op.'),$sub($strrchr(%album%,'-'),$strstr($lower(%album%),' op.'))))

 

If the subtitle is already there, don't touch it
$if(x,y,z)         if x is true, y is returned, otherwise z.
X=%subtitle%
Y=%subtitle%
Z=$mid(%album%,$strstr($lower(%album%),' op.'),$sub($strrchr(%album%,'-'),$strstr($lower(%album%),' op.')))

 

I want to extract the opus from the album title so I need to find out where it starts and how long the text is.
$mid(x,n,i)      First i characters of text x, starting at character n. If i is ommited, the nth character is returned.

 

$mid(%album%,$strstr($lower(%album%),' op.'),$sub($strrchr(%album%,'-'),$strstr($lower(%album%),' op.')))

 

n=$strstr($lower(%album%),' op.')

$strstr(x,y)      Finds the first occurrence of string y in string x.
x=$lower(%album%)  Opus is spelled as Op. and as op., convert to lower case
y =’ op.’ the text to look for

i=$sub($strrchr(%album%,'-'),$strstr($lower(%album%),' op.'))

 

I need to know the length so I have to subtract the start position form the end position

$sub(x,y) subtracts y from x.

 

X=$strrchr(%album%,'-')
$strrchr(x,y)  Finds the last occurrence of character y in string x.

Y=$strstr($lower(%album%),' op.')
This is explained above, find the place where the opus starts.

Actions

I combined several actions.
In case of Beethoven you have Op. (Opus), Woo (Werke ohne Opus Nummer), Hess, etc.
In case of Schubert it is D. (Deutsch), Mozart is KV (Köchel-Verzeichnis), etc.
I also had some where the opus is not in the album but in the title of the movement (%title%).
It is a bit of a job to build this script but once you know the trick, you can easily adapt it.