private static string TranslateArtistInitial(SyncPattern pattern, IITFileOrCDTrack track, string patternstring) { string artist = (track.Artist == null ? "Unknown Artist" : track.Artist); if (track.Compilation && pattern.CompilationsPattern != null && pattern.CompilationsPattern.Length > 0) artist = "Compilations"; patternstring = patternstring.Replace("%ARTISTINITIAL%", artist.Substring(0,1).ToUpper()); return patternstring; }
public bool ContainsSyncPattern(SyncPattern sp) { foreach(SyncPattern existingPattern in syncPatterns) { if(existingPattern.Identifier == sp.Identifier) { return true; } } return false; }
public void TestTranslate() { SyncPattern pattern = new SyncPattern(); pattern.Pattern = "%ARTIST%\\%ALBUM%\\%NAME%"; MockFileOrCDTrack track = new MockFileOrCDTrack(); track.Artist = "Coldplay"; track.Album = "X&Y"; track.Name = "Fix You"; track.Location = "C:\\Music\\Coldplay\\X&Y\\Fix You.mp3"; Assert.AreEqual("Coldplay\\X&Y\\Fix You.mp3", SyncPatternTranslator.Translate(pattern, track)); }
/// <summary> /// Translate a SyncPattern into a string using the provided IITFileOrCDTrack. /// Currently translating the following macros: /// %ARTIST% = The artist name /// %ALBUMARTIST% = The album artist name /// %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 /// %DISCNUM% = The disc number (no trailing space) /// </summary> /// <param name="pattern">SyncPattern to translate.</param> /// <param name="track">iTunes track containing track information.</param> /// <returns>A string representation of pattern and track.</returns> public static string Translate(SyncPattern pattern, IITFileOrCDTrack track) { try { if (track == null) l.Debug("Track is null!"); if (track.Location == null) { l.Debug("track.Location is null!"); throw new MissingTrackException(track); } string patternstring = ((track.Compilation && pattern.CompilationsPattern != null && pattern.CompilationsPattern.Length > 0) ? pattern.CompilationsPattern : pattern.Pattern); 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); patternstring = TranslateName(track, patternstring); patternstring = TranslateTrackNumber(track, patternstring); patternstring = TranslateExtension(track, patternstring); l.Debug("patternstring=" + patternstring); return FileNameUtils.ConvertIllegalCharacters(patternstring); } catch (MissingTrackException ex) { throw ex; } catch (Exception ex) { string message = "Failed to translate track information according to the " + "defined pattern for this device (" + ex.Message + ")."; l.Error(message, ex); throw new ArgumentException(message, ex); } }
/// <summary> /// Translate track album artist. /// </summary> /// <param name="pattern"></param> /// <param name="track"></param> /// <param name="patternstring"></param> /// <returns></returns> private static string TranslateAlbumArtist(SyncPattern pattern, IITFileOrCDTrack track, string patternstring) { string artist = (track.AlbumArtist == null ? "Unknown Artist" : track.AlbumArtist); if (track.Compilation && pattern.CompilationsPattern != null && pattern.CompilationsPattern.Length > 0) artist = "Compilations"; patternstring = patternstring.Replace("%ALBUMARTIST%", artist); return patternstring; }
/// <summary> /// Remove a SyncPattern. /// </summary> /// <param name="sp">SyncPattern to remove.</param> /// <returns></returns> public bool RemoveSyncPattern(SyncPattern sp) { return syncPatterns.Remove(sp); }
/// <summary> /// Add a SyncPattern. /// </summary> /// <param name="sp">SyncPattern sp</param> public void AddSyncPattern(SyncPattern sp) { syncPatterns.Add(sp); }