Удобней работать с dll напрямую, а не консолькой, может добавите в проект?
public class Elib2EbookRunner
{
public async Task<int> RunAsync(string[] args)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.OutputEncoding = Encoding.UTF8;
var logger = new ConsoleLogger();
var parserResult = new Parser(c =>
{
c.CaseInsensitiveEnumValues = true;
}).ParseArguments<Options>(args);
return await parserResult
.MapResult(
async options =>
{
using var getterConfig = BookGetterConfig.GetDefault(options, logger);
using var getter = GetterProvider.Get(getterConfig, options.Url.First().AsUri());
try
{
await getter.Init();
await getter.Authorize();
}
catch (Exception ex)
{
logger.LogInformation($"Ошибка авторизации или инициализации. {ex.Message}");
return 1;
}
foreach (var url in options.Url)
{
logger.LogInformation($"Начинаю генерацию книги {url.CoverQuotes()}");
try
{
var book = await getter.Get(url.AsUri());
foreach (var format in options.Format)
await BuilderProvider.Get(format, options, logger).Build(book);
if (options.Additional)
await new AdditionaFileBuilder(options, logger).Build(book);
if (!options.SaveTemp)
book.Dispose();
}
catch (Exception ex)
{
logger.LogInformation($"Ошибка: {ex}");
}
}
return 0;
},
errs => Task.FromResult(1));
}
}
internal static class Program
{
private static async Task Main(string[] args)
{
var runner = new Elib2EbookRunner();
var exitCode = await runner.RunAsync(args);
Environment.Exit(exitCode);
}
}
пример запуска
var runner = new Elib2EbookRunner();
await runner.RunAsync(new[]
{
"-u", "https://example.com/book/123",
"-f", "epub"
});
Удобней работать с dll напрямую, а не консолькой, может добавите в проект?
пример запуска