Exemple #1
0
        public List <FeedItem> InsertItemsSqlLucene(RssItemCollection items, Feed feed)
        {
            var              entiti           = new TazehaContext();
            List <FeedItem>  listReturnBack   = new List <FeedItem>();
            IRepositorySaver RepositorySql    = new SqlRepository();
            IRepositorySaver RepositoryLucene = new LuceneRepositoryAsService();
            int              erroroccur       = 0;

            foreach (RssItem item in items)
            {
                if (erroroccur > 2)
                {
                    return(listReturnBack);
                }
                if (!Utility.HasFaWord(item.Title))
                {
                    continue;
                }

                FeedItem dbitem = new FeedItem();
                dbitem.Title       = HtmlRemoval.StripTagsRegex(item.Title).Replace("\t", "").Replace("\n", "").Replace("\r", "");
                dbitem.Link        = item.Link.ToString();
                dbitem.Description = HtmlRemoval.StripTagsRegex(item.Description).Replace("\t", "").Replace("\n", "").Replace("\r", "");
                //-------------------------Baray DB koochiK!!-----------------
                dbitem.Description = dbitem.Description.SubstringX(0, _appConfigBiz.MaxDescriptionLength());
                dbitem.SiteId      = feed.SiteId;
                dbitem.FeedId      = feed.Id;
                if (item.PubDate.Year > 1350 && item.PubDate < DateTime.Now.AddDays(2))
                {
                    dbitem.PubDate = item.PubDate;
                }
                else
                {
                    break;
                }
                dbitem.CreateDate = DateTime.Now;
                //dbitem.Cats = feed.Categories.Select(x => x.Id).ToList();
                dbitem.SiteTitle   = feed.Site.SiteTitle;
                dbitem.SiteUrl     = feed.Site.SiteUrl;
                dbitem.SiteId      = feed.SiteId;
                dbitem.IndexedType = dbitem.IndexedType.HasValue ? dbitem.IndexedType + 1 : 1;
                var feedItem = new FeedItem {
                    Link = dbitem.Link, Title = dbitem.Title, PubDate = dbitem.PubDate, CreateDate = DateTime.Now, FeedId = feed.Id
                };

                if (RepositorySql.AddItem(feedItem))
                {
                    RepositoryLucene.AddItem(dbitem);
                    listReturnBack.Add(dbitem);
                    Indexer.Indexer.FirstIndexing(dbitem);
                }
            }
            return(listReturnBack);
        }
Exemple #2
0
        public List <FeedItem> InsertFeedItems(IEnumerable <SyndicationItem> Items, Feed feed)
        {
            var listReturnBack = new List <FeedItem>();
            var entiti         = new TazehaContext();
            var erroroccur     = 0;

            foreach (SyndicationItem item in Items)
            {
                if (erroroccur > 2)
                {
                    return(listReturnBack);
                }
                try
                {
                    if (!Utility.HasFaWord(item.Title.Text))
                    {
                        continue;
                    }

                    FeedItem dbitem = new FeedItem();
                    dbitem.Title       = HtmlRemoval.StripTagsRegex(item.Title.Text).Replace("\t", "").Replace("\n", "").Replace("\r", "");
                    dbitem.Link        = item.Links[0].Uri.AbsoluteUri;
                    dbitem.Description = item.Summary == null ? string.Empty : HtmlRemoval.StripTagsRegex(item.Summary.Text).Replace("\t", "").Replace("\n", "").Replace("\r", "");
                    //-------------------------Baray DB koochi!!-----------------
                    dbitem.Description = dbitem.Description.SubstringX(0, 1000);
                    dbitem.CreateDate  = DateTime.Now;
                    dbitem.SiteId      = feed.SiteId;
                    dbitem.FeedId      = feed.Id;
                    if (item.PublishDate != null)
                    {
                        dbitem.PubDate = item.PublishDate.DateTime;
                    }
                    dbitem.IndexedType = dbitem.IndexedType.HasValue ? dbitem.IndexedType + 1 : 1;
                    //dbitem.Cats = feed.Categories.Select(x => x.Id);
                    dbitem.SiteTitle = feed.Site.SiteTitle;
                    dbitem.SiteUrl   = feed.Site.SiteUrl;
                    dbitem.SiteId    = feed.SiteId;

                    var feedItem = new FeedItem {
                        Link = dbitem.Link, Title = dbitem.Title, PubDate = dbitem.PubDate, CreateDate = DateTime.Now, FeedId = feed.Id
                    };
                    entiti.FeedItems.Add(feedItem);
                    entiti.SaveChanges();
                    dbitem.Id = Guid.Parse(feedItem.Id.ToString());
                    LuceneRepositoryAsService lucene = new LuceneRepositoryAsService();
                    lucene.AddItem(dbitem);
                    //Helper.Utility.InsertItemToCloudant(dbitem);

                    listReturnBack.Add(dbitem);
                    Indexer.Indexer.FirstIndexing(dbitem);
                }
                catch (Exception ex)
                {
                    if (ex.Message.IndexOfX("Inner Exception") > 0)
                    {
                        if (ex.InnerException.Message.IndexOfX("Cannot insert duplicate key") > -1)
                        {
                            //if (item.Links[0].Uri.AbsoluteUri.ContainsX(Crawler.BaseSite.SiteUrl))
                            break;
                        }
                        else
                        {
                            GeneralLogs.WriteLog("Errror @InsertFeedItems" + ex.InnerException.Message);
                        }
                    }
                    else
                    {
                        GeneralLogs.WriteLog("Errror @InsertFeedItems" + ex.Message);
                    }
                    erroroccur++;
                }
            }

            //baraye in biroon forech gharar dadam ke har seri baraye set shodane IndexType save anjam nashe
            //try
            //{
            //    entiti.SaveChanges();
            //}
            //catch (Exception ex)
            //{
            //    if (ex.Message.IndexOfX("Inner Exception") > 0)
            //        EventLog.LogsBuffer.WriteLog(">Errror @InsertFeedItems2" + ex.InnerException.Message);
            //    else
            //        EventLog.LogsBuffer.WriteLog(">Errror @InsertFeedItems2" + ex.Message);
            //}
            return(listReturnBack);
        }