diff --git a/Resources/syncpatterns.xml b/Resources/syncpatterns.xml index 881b064..778d49b 100644 --- a/Resources/syncpatterns.xml +++ b/Resources/syncpatterns.xml @@ -1,7 +1,15 @@ - + + playorder-flat + # Title - Artist + %TRACKNUMINPLAYLIST% - %NAME% - %ARTIST% + This pattern appends the track position according to playlist and then places the tracks in a flat folder. + + + + itunes-style Artist\Album\Track %ARTIST%\%ALBUM%\%TRACKNUMSPACE%%NAME% diff --git a/SyncPatternTranslator.cs b/SyncPatternTranslator.cs index 4f31219..5238423 100644 --- a/SyncPatternTranslator.cs +++ b/SyncPatternTranslator.cs @@ -21,6 +21,7 @@ public class SyncPatternTranslator /// %ALBUM% = The album name /// %ALBUMINITIAL% = The album initial /// %NAME% = The track name + /// %TRACKNUMINPLAYLIST% = Play order index from playlist with leading zero /// %TRACKNUMSPACE% = The track number with a trailing space /// %TRACKNUM% = The track number (no trailing space) /// %DISCNUMDASH% = The disc number with a trailing minus and space @@ -46,6 +47,7 @@ public static string Translate(SyncPattern pattern, IITFileOrCDTrack track) patternstring = TranslateArtist(pattern, track, patternstring); patternstring = TranslateArtistInitial(pattern, track, patternstring); + patternstring = TranslateTrackNumberInPlaylist(track, patternstring); patternstring = TranslateAlbumArtist(pattern, track, patternstring); patternstring = TranslateDiscNumber(track, patternstring); patternstring = TranslateAlbum(track.Album, patternstring); @@ -82,6 +84,23 @@ private static string TranslateArtistInitial(SyncPattern pattern, IITFileOrCDTra return patternstring; } + /// + /// Translate track playorder index from playlist. + /// + /// + /// + /// + private static string TranslateTrackNumberInPlaylist(IITFileOrCDTrack track, string patternstring) + { + //%TRACKNUMINPLAYLIST% + patternstring = patternstring.Replace("%TRACKNUMINPLAYLIST%", + (track.PlayOrderIndex.ToString().Length == 1 ? "00" + track.PlayOrderIndex.ToString() + : track.PlayOrderIndex.ToString().Length == 2 ? "0" + track.PlayOrderIndex.ToString() + : track.PlayOrderIndex.ToString()) + ); + return patternstring; + } + /// /// Translate file extension. /// @@ -215,4 +234,4 @@ private static string TranslateDiscNumber(IITFileOrCDTrack track, string pattern } } -} +} \ No newline at end of file