public Placement(SongInformation songInformation) { this.songInformation = songInformation; if (songInformation.IsCompilation) { if (null == songInformation.Album) { this.parentDirs = new string[] { "Compilations" }; } else { this.parentDirs = new string[] { "Compilations", songInformation.Album }; } } else { if (null == songInformation.Artist) { if (null == songInformation.Album) { this.parentDirs = new string[0]; } else { this.parentDirs = new string[] { songInformation.Album }; } } else { if (null == songInformation.Album) { this.parentDirs = new string[] { songInformation.Artist }; } else { this.parentDirs = new string[] { songInformation.Artist, songInformation.Album }; } } } if (null == songInformation.Title) { this.filename = Path.GetFileName(songInformation.Path); } else if (null == songInformation.Track) { this.filename = songInformation.Title + Path.GetExtension(songInformation.Path); } else { this.filename = string.Format( "{0} - {1}{2}", songInformation.Track.Value.ToString("D2"), songInformation.Title, Path.GetExtension(songInformation.Path)); } }
public static void Main(string[] args) { if (2 != args.Length) { Console.WriteLine("RenameAndMoveMusic [source directory] [destination directory]"); return; } var sourceDir = args[0].Normalize(); var destinationDir = args[1].Normalize(); try { foreach (var path in Program.GetAllMP3AndM4AFiles(sourceDir)) { try { var songInformation = new SongInformation(path); /*Console.WriteLine( @"{0} Album: {1} Artist: {2} Title: {3} Track: {4} IsCompilation: {5}", path, songInformation.Album, songInformation.Artist, songInformation.Title, songInformation.Track, songInformation.IsCompilation);*/ var placement = new Placement(songInformation); /*foreach (var dir in placement.ParentDirs) Console.WriteLine("\t\t" + dir); Console.WriteLine("\t\t" + placement.Filename);*/ Program.Move(destinationDir, path, placement); } catch (Exception e) { Console.WriteLine("Problem with " + path); var ex = e; do { Console.WriteLine(ex); ex = ex.InnerException; } while (null != ex); } } Program.Clean(destinationDir); } catch (Exception e) { var ex = e; do { Console.WriteLine(ex); ex = ex.InnerException; } while (null != ex); } }