private async Task <ArticleModel> ActualizeArticle(ArticleModel article, IMediaSourceHelper sh) { try { if (sh.NeedsToEvaluateArticle()) { if (article.LeadImage?.Url != null && !article.LeadImage.IsLoaded) { article.LeadImage.Image = await Download.DownloadImageAsync(article.LeadImage.Url); article.LeadImage.IsLoaded = true; } string articleresult = await Download.DownloadStringAsync(article.LogicUri); var tuple = await sh.EvaluateArticle(articleresult, article); if (tuple.Item1) { if (sh.WriteProperties(ref article, tuple.Item2)) { article.State = ArticleState.Loaded; ArticleHelper.Instance.OptimizeArticle(ref article); } else { article.State = ArticleState.WritePropertiesFaillure; } } else { article.State = ArticleState.EvaluateArticleFaillure; } } else { article.State = ArticleState.Loaded; ArticleHelper.Instance.OptimizeArticle(ref article); } ArticleHelper.Instance.AddWordDumpFromArticle2(ref article); return(article); } catch (Exception ex) { if (article != null) { LogHelper.Instance.Log(LogLevel.Error, this, "ActualizeArticle failed! Source: " + article.SourceConfigurationId + " URL: " + article.PublicUri, ex); } } return(article); }
private async Task AktualizeArticlesTask() { using (var unitOfWork = new UnitOfWork(false)) { while (_newArticleModels.Any()) { var article = _newArticleModels.OrderByDescending(d => d.PublicationTime).FirstOrDefault(); _newArticleModels.Remove(article); article.State = ArticleState.Loading; _toDatabaseFlatArticles.Add(article); await ToDatabase(); //Messenger.Default.Send(article, Messages.ArticleRefresh); //this comes from the cache, so its OK to use here article.FeedConfiguration = await _settingsRepository.GetFeedConfigurationFor(article.FeedConfigurationId, await unitOfWork.GetDataService()); IMediaSourceHelper sh = ArticleHelper.Instance.GetMediaSource(article); if (sh == null) { LogHelper.Instance.Log(LogLevel.Warning, this, "ArticleHelper.DownloadArticle: Tried to Download Article which cannot be downloaded"); article.State = ArticleState.WrongSourceFaillure; _toDatabaseFlatArticles.Add(article); await ToDatabase(); } else { article = await ActualizeArticle(article, sh); _toDatabaseArticles.Add(article); await ToDatabase(); } var percentage = Convert.ToInt32(100 - ((_newArticleModels.Count * 100) / _newArticles)); _progressService.ShowProgress("Artikel werden heruntergeladen...", percentage); } } }
private async Task<ArticleModel> ActualizeArticle(ArticleModel article, IMediaSourceHelper sh) { try { if (sh.NeedsToEvaluateArticle()) { if (article.LeadImage?.Url != null && !article.LeadImage.IsLoaded) { article.LeadImage.Image = await Download.DownloadImageAsync(article.LeadImage.Url); article.LeadImage.IsLoaded = true; } string articleresult = await Download.DownloadStringAsync(article.LogicUri); var tuple = await sh.EvaluateArticle(articleresult, article); if (tuple.Item1) { if (sh.WriteProperties(ref article, tuple.Item2)) { article.State = ArticleState.Loaded; ArticleHelper.Instance.OptimizeArticle(ref article); } else { article.State = ArticleState.WritePropertiesFaillure; } } else { article.State = ArticleState.EvaluateArticleFaillure; } } else { article.State = ArticleState.Loaded; ArticleHelper.Instance.OptimizeArticle(ref article); } ArticleHelper.Instance.AddWordDumpFromArticle2(ref article); return article; } catch (Exception ex) { if (article != null) LogHelper.Instance.Log(LogLevel.Error, this, "ActualizeArticle failed! Source: " + article.SourceConfigurationId + " URL: " + article.PublicUri, ex); } return article; }