Beispiel #1
0
        public void ProcessFiles()
        {
            var files = _folderInteractor.GetFilesForFolder(_folderToWatch).Shuffle();

            foreach (var file in files)
            {
                if (SupportedFileTypes.IsSupportedFileType(file))
                {
                    var filePath = file;
                    if (SupportedFileTypes.RequiresTranscoding(file))
                    {
                        var newFile = _transcoder.Transcode(filePath);
                        _folderInteractor.DeleteFile(filePath);
                        filePath = newFile;
                    }

                    var musicInfo = _musicInfoReader.GetInfoForFile(filePath);
                    var album     = string.IsNullOrEmpty(musicInfo.Album) ? UNKNOWN_ALBUM_NAME : musicInfo.Album;
                    var artist    = string.IsNullOrEmpty(musicInfo.Artist) ? UNKNOWN_ARTIST_NAME : musicInfo.Artist;

                    musicInfo.FullPath = MoveToLibraryFolder(filePath, artist, album);
                    _library.AddOrUpdateMusicInLibrary(musicInfo);
                }
            }
        }
Beispiel #2
0
        public List <MusicInfo> CrawlDirectory(string audioDirectory)
        {
            var result = new List <MusicInfo>();

            var musicInfoReader = new MusicInfoReader();
            var files           = Directory.GetFiles(audioDirectory).Where(X => SupportedFileTypes.IsSupportedFileType(X)).ToArray();


            foreach (var file in files)
            {
                result.Add(musicInfoReader.GetInfoForFile(file));
            }

            //look for subdirectories, recursively get files
            var directories = Directory.GetDirectories(audioDirectory);

            foreach (var directory in directories)
            {
                result.AddRange(CrawlDirectory(directory));
            }

            return(result);
        }