Exemplo n.º 1
0
        private void btnScan_Click(object sender, EventArgs e)
        {
            var folderPath = txtFolderPath.Text;

            ScanStarted();
            if (Directory.Exists(folderPath))
            {
                ConsoleLog("Computing hash of files...");
                _filesHash = Sha2Calculator.ComputeFolderHash(txtFolderPath.Text);
                ConsoleLog("Processing files...");
                var filePaths = Directory.GetFiles(folderPath, "*.mp3");
                var entities  = new SoulstoneEntities();
                foreach (var filePath in filePaths)
                {
                    var fileName = Path.GetFileName(filePath).ToLower();
                    var fileHash = _filesHash[fileName];
                    if (!SongExists(entities, fileHash))
                    {
                        var musicTrack = Id3Reader.Instance.GetMusicTrackFromId3(filePath);
                        if (musicTrack == null)
                        {
                            continue;
                        }

                        AddSong(entities, musicTrack, fileHash, fileName);
                        entities.SaveChanges();
                        ConsoleLog(string.Format("{0} : added to the database", Path.GetFileName(filePath)));
                    }
                    else
                    {
                        ConsoleLog(string.Format("{0} : already exists on database", fileName));
                    }

                    _totalFiles += 1;
                }
            }

            ScanFinished();
        }