private static async Task <BookInfoSeeker> ReopenSeeker(BookInfoSeeker seeker) { seeker?.Clicker.Dispose(); var clicker = await CreateClicker(ChromeOptions); seeker = new BookInfoSeeker(clicker); return(seeker); }
public async Task Explore(CancellationToken cancellationToken) { _seeker = await OpenSeeker(); var captchaErrors = 0; var downloadedBooks = 0; while (true) { cancellationToken.ThrowIfCancellationRequested(); try { await ExploringStep(cancellationToken); downloadedBooks++; captchaErrors = 0; } catch (Exception exception) when(exception.Message.Contains("captcha")) { _logger.Warning("Detected captcha."); captchaErrors++; if (captchaErrors > 5) { captchaErrors = 0; _logger.Information("Reopening chrome driver..."); _seeker = await ReopenSeeker(_seeker); _logger.Information("Opened new istance of chrome driver"); } } catch (Exception ex) when(ex.GetType().Namespace == "OpenQA.Selenium") { _logger.Error(ex, "Error in Selenium driver"); _seeker = await ReopenSeeker(_seeker); } catch (InvalidOperationException ioe) when(ioe.Message.Contains("was not read")) { _logger.Error(ioe, "Error while exploring ekw"); _seeker = await ReopenSeeker(_seeker); } _logger.Debug("Downloaded books: {DownloadedBooks}", downloadedBooks); } }