コード例 #1
0
        private Song ImportSong(string songFileName, FileInfo coverImageFile, DateTimeOffset importDate, ISongRepository songRepository, IImageService imageService)
        {
            using (var songTagFile = TagLib.File.Create(songFileName))
            {
                var tagValidationResults = ValidateTags(songTagFile);
                if (tagValidationResults.Any())
                {
                    _logger.LogWarning("File {0} is invalid. {1}", songFileName, string.Join(", ", tagValidationResults));
                    return(null);
                }

                var songFileInfo         = new System.IO.FileInfo(songFileName);
                var relativeSongFileName = Path.Combine(songFileInfo.Directory.Name, songFileInfo.Name);

                var song = songRepository.GetByFileNameOrDefault(relativeSongFileName);
                if (song == null)
                {
                    song = songRepository.Create();
                    songRepository.Add(song);
                }

                song.Map(
                    title: songTagFile.Tag.Title,
                    album: songTagFile.Tag.Album,
                    artist: songTagFile.Tag.FirstPerformer,
                    coverImageFile: coverImageFile,
                    duration: songTagFile.Properties.Duration,
                    fileName: relativeSongFileName,
                    imageService: imageService);

                song.LastImportDate = importDate;

                return(song);
            }
        }