示例#1
0
        public ActionResult Scan()
        {
            List <FileMetaData> fileDirectories = new List <FileMetaData>();
            string connectionString             = db.Database.Connection.ConnectionString;

            using (FilePathScanner scanner = new FilePathScanner())
            {
                fileDirectories = scanner.GetFilePaths();
            }

            TagLib.File file = null;

            List <FileMetaData> completeMetaDataList = new List <FileMetaData>();

            foreach (var item in fileDirectories)
            {
                file = TagLib.File.Create(item.FileLocation);
                FileInfo fileSize = new FileInfo(item.FileLocation);

                var metaData = new FileMetaData
                {
                    Album = file.Tag.Album,
                    //AlbumArt = file.TagHandler.Picture.
                    AlbumArtist  = file.Tag.FirstAlbumArtist,
                    Artist       = file.Tag.FirstPerformer,
                    BitRate      = file.Properties.AudioBitrate.ToString(),
                    BPM          = file.Tag.BeatsPerMinute.ToString(),
                    Comments     = file.Tag.Comment,
                    Composer     = file.Tag.FirstComposer,
                    Genre        = file.Tag.FirstGenre,
                    Kind         = file.MimeType,
                    Name         = file.Tag.Title,
                    SampleRate   = file.Properties.AudioSampleRate.ToString(),
                    Size         = fileSize.Length.ToString(),
                    TotalTime    = file.Properties.Duration.ToString(),
                    TrackNumber  = file.Tag.Track.ToString(),
                    Year         = file.Tag.Year.ToString(),
                    DateAdded    = System.DateTime.Now,
                    IsDeleted    = false,
                    GUID         = System.Guid.NewGuid(),
                    FileLocation = item.FileLocation,
                };
                completeMetaDataList.Add(metaData);
            }
            using (Repository <FileMetaData> rep = new Repository <FileMetaData>())
            {
                rep.BulkInsert(connectionString, "FileMetaDatas", completeMetaDataList);

                rep.Commit();
            }

            return(View());
        }
        public void DoLongOperation()
        {
            using (FilePathScanner scanner = new FilePathScanner())
            {
                recordsToBeProcessed = scanner.GetFilePaths().Count();
            }

            for (int record = 0; record <= recordsToBeProcessed; record++)
            {
                if (ShouldNotifyClient(record))
                {
                    Clients.Caller.sendMessage(string.Format
                                                   ("Processing item {0} of {1}", record, recordsToBeProcessed));
                    Thread.Sleep(1);
                }
            }
        }