public void GetSongs(string folder) { Console.WriteLine("Folder: {0}", folder); var files = Directory.GetFiles(folder, "*.mp3", SearchOption.TopDirectoryOnly); foreach (var file in files) { //Console.WriteLine(" file: {0}", Path.GetFileName(file)); UltraID3 id3 = new UltraID3(); try { id3.Read(file); } catch (Exception e) { LogSongMessage(new SongLog { LogType = (byte)SongLogType.Error, Filename = Path.GetFileName(file), Filepath = file, Source = e.Source, Message = e.Message }); continue; } //Console.WriteLine("{0} | {1} | {2} | {3}", id3.Artist, id3.Album, id3.Title, file); //TODO: Log any handled errors in UltraID3 object ID3MetaDataException[] id3Errors = id3.GetExceptions(ID3ExceptionLevels.Error); if (id3Errors.Length > 0) { foreach (ID3MetaDataException id3Exception in id3Errors) { LogSongMessage(new SongLog { LogType = (byte)SongLogType.Error, Filename = Path.GetFileName(file), Filepath = file, Source = id3Exception.Source, Message = id3Exception.Message }); } } ID3MetaDataException[] id3Warnings = id3.GetExceptions(ID3ExceptionLevels.Warning); if (id3Warnings.Length > 0) { foreach (ID3MetaDataException id3Exception in id3Warnings) { LogSongMessage(new SongLog { LogType = (byte)SongLogType.Warning, Filename = Path.GetFileName(file), Filepath = file, Source = id3Exception.Source, Message = id3Exception.Message }); } } //GetPictureData(); ID3FrameCollection pictureFrames = id3.ID3v2Tag.Frames.GetFrames(MultipleInstanceID3v2FrameTypes.ID3v22Picture); if (pictureFrames.Count > 0) { LogSongMessage(new SongLog { LogType = (byte)SongLogType.Information, Filename = Path.GetFileName(file), Filepath = file, Source = "GetSongs", Message = String.Format("picture count:{0}",pictureFrames.Count.ToString()) }); foreach (ID3v22PictureFrame picFrame in pictureFrames) { SavePicture(new SongPicture { Filepath = file, Picture = picFrame.Picture }); } } // add to the database using (var transaction = session.BeginTransaction()) { var song = new Song { Title = id3.Title, Artist = id3.Artist, Album = id3.Album, Year = (short)id3.Year.GetValueOrDefault(), Genre = id3.Genre, Size = (long)id3.Size, TrackCount = (short)id3.TrackCount.GetValueOrDefault(), TrackNum = (short)id3.TrackNum.GetValueOrDefault(), BitRate = id3.FirstMPEGFrameInfo.Bitrate, Frequency = id3.FirstMPEGFrameInfo.Frequency, Mode = id3.FirstMPEGFrameInfo.Mode.ToString(), Duration = id3.Duration, Filename = Path.GetFileName(file), Filepath = file }; //session.SaveOrUpdate(song); session.Save(song); transaction.Commit(); } } var folders = Directory.GetDirectories(folder); foreach (var subfolder in folders) { GetSongs(subfolder); } }