コード例 #1
0
        static void InternalMain(string[] args)
        {
            if (args.Length != 2)
            {
                WriteUsage();
                return;
            }

            var inputPath  = args[0].ToApplicationRelativeAbsolutePath();
            var outputPath = args[1].ToApplicationRelativeAbsolutePath();

            using (var bootstrapper = new AutofacBootstrapper())
            {
                var context = bootstrapper.GetContext();

                var directoryService     = context.Resolve <IDirectoryService>();
                var metaDataFactory      = context.Resolve <IMetaDataFactory>();
                var audioFileService     = context.Resolve <IAudioFileService>();
                var metaDataQueueFactory = context.Resolve <IMetaDataQueueFactory>();

                // Create input path traverser and replicate the input directory
                // structure into the output directory.
                var inputPathTraverser = directoryService.Traverse(inputPath);
                directoryService.PrepareReplication(inputPath, outputPath).Replicate();

                // Create metadata for each .m4a file in the input directory.
                var inputMetaData = inputPathTraverser
                                    .SelectMany(di => di.GetFiles("*.m4a"))
                                    .Select(f => metaDataFactory.Create(inputPath, f.FullName, outputPath))
                                    .ToArray();

                // Create the metadata queue.
                var metaDataQueue = metaDataQueueFactory.Create(inputMetaData);

                // Run conversion.
                Task.WaitAll(
                    ConvertRoutine(audioFileService, metaDataQueue),
                    ConvertRoutine(audioFileService, metaDataQueue),
                    ConvertRoutine(audioFileService, metaDataQueue),
                    ConvertRoutine(audioFileService, metaDataQueue)
                    );

                Console.WriteLine("Conversion has been completed.");
            }
        }
コード例 #2
0
        static void InternalMain(string[] args)
        {
            if (args.Length != 2)
            {
                WriteUsage();
                return;
            }

            var inputPath  = args[0].ToApplicationRelativeAbsolutePath();
            var outputPath = args[1].ToApplicationRelativeAbsolutePath();

            using (var bootstrapper = new AutofacBootstrapper())
            {
                var context = bootstrapper.GetContext();

                var directoryService = context.Resolve <IDirectoryService>();
                var pathTransformer  = context.Resolve <IPathTransformer>();

                // Create input path traverser and replicate the input directory
                // structure into the output directory.
                var inputPathTraverser = directoryService.Traverse(inputPath);

                var shortcutEmbryos = inputPathTraverser
                                      .SelectMany(di => di
                                                  .GetFiles("*.mp3")
                                                  .Select(fi => new ShortcutEmbryo(pathTransformer, fi, inputPath, outputPath))
                                                  )
                                      .ToArray();

                foreach (var embryo in shortcutEmbryos)
                {
                    Console.WriteLine();
                    Console.WriteLine("Input file: {0}", embryo.FileInfo.FullName);
                    Console.WriteLine("Output shortcut: {0}", embryo.OutputFilePath);
                    CreateShortcut(embryo.OutputName, embryo.OutputFilePath, embryo.FileInfo.FullName);
                }

                Console.WriteLine("Shortcuts have been created.");
            }
        }