コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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;
        }