Okay, it may not be massive by someone like Marko's standards, but it's certainly the biggest I've created. I think I used a couple of techniques that I have not seen posted on the board (at least in my searches).
Here's the directory rule:
Base Path:
M:\Mine\ //or 'Others'
Directory Rule:
If(IsEqual([Genre],Podcast),
Podcast\[Album]\,
[Album Artist (auto)]\
If(IsEqual([Album Artist (auto)],U2),
[Album]\,
If(IsEqual([Disc #],unknown,8),
[Album]\,
[Album]\Disc [Disc #]\
)
)
)
I have 2 main directory trees. One for music I own on physical media (eg. Mine) and the other for my iTunes music store purchases (eg. Others). This expression is straightforward, I think. I have to manually enter which directory tree I'm renaming, then it puts the files in a typical [Album Artist (auto)]\[Album]\ format. There are exceptions for Podcasts and my U2 collection. The only other oddity is that if I've assigned a disc number, then there's an extra level to the directory structure. I only assign disc numbers if there are more than 1 disc in a set. If it's only a single-disc album--no disc number.
Here's the file rule:
If(IsEqual([File Type],m4p,8),
If(IsEmpty(Mid([Filename (name)],60, -1)),
If(IsEqual([Genre],Podcast),
[Track #] - [Name],
If(IsEqual([Album Artist],unknown,8),
If(IsEqual([Track #],0,2),[Name],[Track #] - [Name]),
If(IsEqual([Track #],0,2),[Artist] - [Name],[Track #] - [Artist] - [Name])
)
),
If(IsEqual([Genre],Podcast),
[Track #] - Mid([Name],0,52)...
If(IsEqual([Album Artist],unknown,8),
If(IsEqual([Track #],0,2),Mid([Name],0,57)...,[Track #] - Mid([Name],0,52)...),
If(IsEqual([Track #],0,2),Mid([Artist] - [Name]),0,57)...,[Track #] - Mid([Artist] - [Name]),0,52)...)
)
)
),
If(IsEqual([Media Type],image,8),
[Album Artist (auto)] - [Album],
If(IsEqual([File Type],ape,8),
If(IsEqual([Track #],0,2),
[Album],
If(IsEqual([Album Artist],unknown,8),
[Track #] - [Name],
[Track #] - [Artist] - [Name]
)
),
If(IsEqual([Name],.cue,8),
[Album].cue,
If(IsEqual([Genre],Podcast),
[Track #] - [Name],
If(IsEqual([Album Artist],unknown,8),
If(IsEqual([Track #],0,2),[Name],[Track #] - [Name]),
If(IsEqual([Track #],0,2),[Artist] - [Name],[Track #] - [Artist] - [Name])
)
)
)
)
)
)
Again, like many of Marko's expressions--intimidating to look at, but not so bad once you break it down. My basic track naming scheme is [Track #] - [Name]. If I've assigned an Album Artist for an album (eg. Various, Soundtrack, etc.), then I include the track's [Artist] as part of the name.
There are exceptions for the CUE files I have in my MC library, as well as the APE files that are associated with them and the album art that is stored in each album's directory. The album art is [Album Artist (auto) - [Album]. The others (CUE & APE) are named with just the Album name. Of course, nothing is simple, so the few albums I have that are ripped directly to APE files have track numbers and they get named like the others, with [Track #] - [Name]
Podcasts have their own rules....
However, what I like the most is the auto-trimming of m4p files so they can be played by the QuickTime engine. JRiver is on the record as saying that you can't play files back via QuickTime if the filename is longer than 64 characters (which I believe includes the '.xxx' extension), so the practical filename length is actually 60 characters.
I discovered that the expression engine does NOT throw an error when asked to return characters that don't exist, so for my m4p files, I check 'IsEmpty(Mid([Filename (name)],60, -1)', which basically finds filenames longer than 60 characters.
I can then use normal naming techniques in conjunction with the 'Mid()' command to shorten the filenames with ellipsises.
The only gotcha I ran into here is that if you include the [Track #] field within the 'Mid()' command, the track number is coerced into a string, so you lose the auto-padding options that are so nice to use in the renaming options. That's why the track# fields are outside my 'Mid()' renaming commands.
Sorry for the long post, but I hope it gives some folks new ideas...
Best,
Brad