Exemple #1
0
        public static void Combine(FileCommandOptions Options)
        {
            var pattern   = Path.GetFileName(Options.Input);
            var directory = Path.GetDirectoryName(Options.Input);
            var extension = Path.GetExtension(Options.Input);

            if (String.IsNullOrWhiteSpace(Options.Output))
            {
                Options.Output = Path.Join(directory, $"CombineFiles{extension}");
            }

            var GetAllFileText  = string.Empty;
            var currentEncoding = Encoding.UTF8;

            var inputFilePaths = Directory.GetFiles(directory, pattern);

            Console.WriteLine("Number of files: {0}.", inputFilePaths.Length);

            if (!inputFilePaths.Any())
            {
                throw new Exception("Files not Found");
            }

            foreach (var inputFilePath in inputFilePaths)
            {
                currentEncoding = Utils.GetCurrentFileEncoding(inputFilePath);
                GetAllFileText += File.ReadAllText(inputFilePath, currentEncoding);
                GetAllFileText += Environment.NewLine;

                Console.WriteLine("The file {0} has been processed.", inputFilePath);
            }

            File.WriteAllText(Options.Output, $"{GetAllFileText}", currentEncoding);
        }
Exemple #2
0
    public async Task RunAsync(FileCommandOptions opts, IConfiguration configuration)
    {
        if (!File.Exists(opts.FilePath))
        {
            _console.ErrorLine("File doesn't exist.");
            return;
        }

        if (IsFileExceedingToFileSizeLimit(opts.FilePath))
        {
            _console.ErrorLine("The file size is exceeding 5MB file size limit.");
            return;
        }

        var textFile = await File.ReadAllLinesAsync(opts.FilePath, Encoding.UTF8)
                       .ConfigureAwait(false);

        var validUrls = FilterValidUrls(textFile);

        if (validUrls.Count == 0)
        {
            _console.ErrorLine("No valid URLs found.");
            return;
        }

        using var progress = new ProgressBar(
                  validUrls.Count,
                  "downloading from text file...",
                  ProgressBarConfiguration.BarOption);

        var useTachiyomiLayout = opts.UseTachiyomiLayout || bool.Parse(configuration["UseTachiyomiFolderStructure"]);

        foreach (var url in validUrls)
        {
            var code     = Regex.Match(url, @"\d+").Value;
            var response = await _api.FetchSingleAsync(code);

            await _download.DownloadAsync(response, opts.Output, opts.Pack, useTachiyomiLayout, progress);

            progress.Tick();
        }
    }