Skip to content

Добавить dll #172

Description

@korobovsp

Удобней работать с 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"
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions