Exemplo n.º 1
0
 public static void DeleteAllUndoFiles(string folder)
 {
     foreach (var file in VirtualDrive.GetFiles(folder, "*." + undoFileSuffix))
     {
         VirtualDrive.DeleteFile(file);
     }
 }
Exemplo n.º 2
0
Arquivo: Lib.cs Projeto: MRoc/puremp3
        public override void OnFine(AlbumExplorer.AlbumResult album)
        {
            string[] files = VirtualDrive.GetFiles(album.Directory.FullName, "*.mp3");

            foreach (string file in files)
            {
                Rename(new DirectoryInfo(album.Directory.FullName), new FileInfo(file));
            }
        }
Exemplo n.º 3
0
        private void WebQuery(DirectoryInfo dirInfo, AlbumExplorer.AlbumData album)
        {
            Release release = QueryEngine.QueryRelease(
                album.Words[FrameMeaning.Artist],
                album.Words[FrameMeaning.Album],
                VirtualDrive.GetFiles(dirInfo.FullName, "*.mp3").Count());

            if (!Object.ReferenceEquals(release, null))
            {
                CreateTagsFromRelease(dirInfo.FullName, release);
                NumSucceeded++;
            }
        }
Exemplo n.º 4
0
        public static IEnumerable <KeyValuePair <FileInfo, IDictionary <FrameMeaning, object> > > CreateObjects(
            string dir,
            Release release,
            TrackNumberGenerator trackNumberGenerator)
        {
            string[] files = VirtualDrive.GetFiles(dir, "*.mp3");

            for (int i = 0; i < files.Length; i++)
            {
                yield return(new KeyValuePair <FileInfo, IDictionary <FrameMeaning, object> >(
                                 new FileInfo(files[i]),
                                 CreateObjects(release, i, trackNumberGenerator)));
            }
        }
Exemplo n.º 5
0
        private void LoadDirectory()
        {
            if (!Object.ReferenceEquals(loader, null))
            {
                loader.Abort = true;
            }

            WorkerThreadPool.Instance.StartWork(new Work(
                                                    delegate(IWork w)
            {
                if (!Object.ReferenceEquals(loader, null))
                {
                    loader.Abort = true;
                    loader       = null;
                }

                transactionId.Start();
            },
                                                    delegate(IWork w)
            {
                try
                {
                    loader = new TagModelList.TagListLoader(
                        this.Path.Value, VirtualDrive.GetFiles(this.Path.Value, "*.mp3"));

                    loader.Run();
                }
                catch (Exception e)
                {
                    Logger.WriteLine(Tokens.Exception, e);
                }
            },
                                                    delegate(IWork w)
            {
                if (!Object.ReferenceEquals(loader, null) && !loader.Abort)
                {
                    History.Instance.ExecuteInTransaction(
                        delegate()
                    {
                        TagModelList.SetFiles(loader);
                        Dirty.Value = false;
                    },
                        transactionId.CurrentId,
                        "Document.OnLoadingFinished");
                }

                transactionId.End();
            }));
        }
Exemplo n.º 6
0
        public static IEnumerable <int> LoadFileLenthFromMp3s(string dir, MpegDataSize sizeProvider, MpegSkipBytes skipBytes)
        {
            List <int> result = new List <int>();

            foreach (var file in VirtualDrive.GetFiles(dir, "*.mp3"))
            {
                int fileLengthInSecs = LoadFileLengthFromMp3(file, sizeProvider, skipBytes);
                if (fileLengthInSecs != -1)
                {
                    result.Add(fileLengthInSecs);
                }
            }

            return(result);
        }
Exemplo n.º 7
0
        public static void ClearAttributes(string currentDir)
        {
            if (VirtualDrive.ExistsDirectory(currentDir))
            {
                VirtualDrive.ClearDirectoryAttributes(currentDir);

                foreach (string dir in VirtualDrive.GetDirectories(currentDir))
                {
                    ClearAttributes(dir);
                }
                foreach (string file in VirtualDrive.GetFiles(currentDir, "*.*"))
                {
                    VirtualDrive.ClearFileAttributes(file);
                }
            }
        }
Exemplo n.º 8
0
        private static int FindCurrentUndoFileIndex(string folder)
        {
            List <int> numbers = new List <int>();

            VirtualDrive.GetFiles(folder, "*." + undoFileSuffix).ForEach(
                (n) => numbers.Add(Int32.Parse(new FileInfo(n).Name.Split('.')[0])));

            if (numbers.Count > 0)
            {
                return(numbers.Max());
            }
            else
            {
                return(-1);
            }
        }
Exemplo n.º 9
0
        public virtual void Process(object obj)
        {
            DirectoryInfo rootDirectory = obj as DirectoryInfo;

            List <string> directories = new List <string>();

            directories.Add(rootDirectory.FullName);

            while (directories.Count > 0)
            {
                if (Abort)
                {
                    return;
                }

                try
                {
                    string currentDirectory = directories[0];
                    directories.RemoveAt(0);

                    if (Processor.SupportedClasses().Contains(typeof(DirectoryInfo)) ||
                        ForceRecurse)
                    {
                        directories.AddRange(VirtualDrive.GetDirectories(currentDirectory));
                    }

                    if (Processor.SupportedClasses().Contains(typeof(DirectoryInfo)))
                    {
                        ProcessDir(currentDirectory);
                    }

                    if (Processor.SupportedClasses().Contains(typeof(FileInfo)))
                    {
                        ProcessFiles(VirtualDrive.GetFiles(currentDirectory, FileMask));
                    }
                }
                catch (System.IO.DirectoryNotFoundException e)
                {
                    Logger.WriteLine(Tokens.Exception, e);
                }
                catch (System.UnauthorizedAccessException e)
                {
                    Logger.WriteLine(Tokens.Exception, e);
                }
            }
        }
Exemplo n.º 10
0
        private static void TestFailingPattern()
        {
            string path = VirtualDrive.VirtualFileName(@"TestAlbumTagToFilenameProcessor\TestFailingPattern\");

            TestTags.CreateDemoTags(path, 6, n => n.Artist = null);

            string[] filesBefore = VirtualDrive.GetFiles(path, "*.mp3");

            AlbumTagToFilenameProcessor processor = new AlbumTagToFilenameProcessor(
                "Artist - Album - TrackNumber - Title");

            processor.Process(new DirectoryInfo(path));

            string[] filesAfter = VirtualDrive.GetFiles(path, "*.mp3");

            UnitTest.Test(filesBefore.SequenceEqual(filesAfter));

            VirtualDrive.DeleteDirectory(path, true);
        }
Exemplo n.º 11
0
        private IEnumerable <int> CollectFileLengthsInSecs(string dir)
        {
            List <int> result = new List <int>();

            foreach (var file in VirtualDrive.GetFiles(dir, "*.mp3"))
            {
                if (Abort)
                {
                    return(result);
                }

                int fileLengthInSecs = MP3Tools.LoadFileLengthFromMp3(file, TagUtils.MpegDataSize, TagUtils.TagSizeV2);
                if (fileLengthInSecs != -1)
                {
                    result.Add(fileLengthInSecs);
                }
            }

            return(result);
        }
Exemplo n.º 12
0
        public AlbumResult ExploreDirectory(DirectoryInfo dir)
        {
            AlbumResult result = new AlbumResult(dir);

            try
            {
                string[] files = VirtualDrive.GetFiles(dir.FullName, "*.mp3");

                CheckFileCount(result.Album, files);
                if (result.Album.Result != ParseResult.Fine)
                    return result;

                SortedList<int, int> tracks = new SortedList<int, int>();
                List<string> titles = new List<string>();
                foreach (string file in files)
                {
                    CheckFile(result.Album, new FileInfo(file), tracks, titles);
                    if (result.Album.Result != ParseResult.Fine)
                    {
                        return result;
                    }
                }

                if (TitleRequired)
                {
                    CheckDummyTitles(result.Album, titles);
                    if (result.Album.Result != ParseResult.Fine)
                        return result;
                }

                CheckTrackOrder(result.Album, tracks);
                if (result.Album.Result != ParseResult.Fine)
                    return result;
            }
            catch (System.IO.PathTooLongException)
            {
                result.Album.Result = ParseResult.FailurePathTooLongException;
            }

            return result;
        }
Exemplo n.º 13
0
        private static void TestFullPattern()
        {
            string path = VirtualDrive.VirtualFileName(@"TestAlbumTagToFilenameProcessor\TestFullPattern\");

            TestTags.CreateDemoTags(path, 6, n => n.Album = "Album");

            AlbumTagToFilenameProcessor processor = new AlbumTagToFilenameProcessor(
                "Artist - Album - TrackNumber - Title");

            processor.Process(new DirectoryInfo(path));

            string[] files = VirtualDrive.GetFiles(path, "*.mp3");

            UnitTest.Test(files.Length == 6);
            for (int i = 0; i < files.Length; i++)
            {
                string expected = Path.Combine(path, "Artist - Album - " + (i + 1) + " - Song No. " + (i + 1) + ".mp3");
                UnitTest.Test(files[i] == expected);
            }

            VirtualDrive.DeleteDirectory(path, true);
        }
Exemplo n.º 14
0
        private static void TestCopy()
        {
            string pathSrc     = VirtualDrive.VirtualFileName(@"TestAlbumToLibraryProcessor\TestCopy\Src\");
            string pathLibrary = VirtualDrive.VirtualFileName(@"TestAlbumToLibraryProcessor\TestCopy\Lib\");

            VirtualDrive.Store(Path.Combine(pathLibrary, "test.mp3"), new byte[] {});
            TestTags.CreateDemoTags(pathSrc, 3, n => n.ReleaseYear = "1993");

            AlbumToLibraryProcessor processor = new AlbumToLibraryProcessor(
                pathLibrary, FileOperationProcessor.FileOperation.Copy, FileOperationProcessor.ConflictSolving.Skip);

            AlbumExplorer.AlbumResult obj =
                new AlbumExplorer.AlbumResult(new DirectoryInfo(pathSrc));
            obj.Album[FrameMeaning.Artist]      = "Artist";
            obj.Album[FrameMeaning.Album]       = "Album";
            obj.Album[FrameMeaning.ReleaseYear] = "1993";

            processor.Process(obj);

            VirtualDrive.ExistsDirectory(pathSrc);

            string expectedDst = Path.Combine(pathLibrary, "Artist - Album (1993)");

            VirtualDrive.ExistsDirectory(expectedDst);

            string[] files = VirtualDrive.GetFiles(expectedDst, "*.mp3");

            UnitTest.Test(files.Length == 3);
            for (int i = 0; i < files.Length; i++)
            {
                string expected = Path.Combine(expectedDst, "Test" + i + ".mp3");
                UnitTest.Test(files[i] == expected);
            }

            VirtualDrive.DeleteDirectory(pathSrc, true);
            VirtualDrive.DeleteDirectory(pathLibrary, true);
        }
Exemplo n.º 15
0
        public void Process(object obj)
        {
            DirectoryInfo dir = null;

            if (obj is DirectoryInfo)
            {
                dir = obj as DirectoryInfo;
            }
            else if (obj is AlbumExplorer.AlbumResult)
            {
                dir = (obj as AlbumExplorer.AlbumResult).Directory;
            }
            else
            {
                throw new Exception("Unknown object passed!");
            }

            FileNameGenerator generator = new FileNameGenerator(Pattern);

            foreach (string file in VirtualDrive.GetFiles(dir.FullName, "*.mp3"))
            {
                RenameFile(dir, new FileInfo(file), generator);
            }
        }
Exemplo n.º 16
0
Arquivo: Lib.cs Projeto: MRoc/puremp3
 private static bool IsDirectoryEmpty(DirectoryInfo dir)
 {
     return(VirtualDrive.GetFiles(dir.FullName, "*.*").Length == 0 &&
            VirtualDrive.GetDirectories(dir.FullName).Length == 0);
 }