示例#1
0
        //public static string addtwitterContentfeedsdata(string keyword, string userId, Helper.AppSettings _appSettings )
        //{
        //    //MongoRepository mongorepo = new MongoRepository("ContentFeeds", _appSettings);
        //    MongoRepository mongorepo = new MongoRepository("RssNewsContentsFeeds", _appSettings);
        //    bool output = false;

        //    string timeline = TwitterHashTag.TwitterBoardHashTagSearch(keyword, null);
        //    int i = 0;
        //    if (!string.IsNullOrEmpty(timeline) && !timeline.Equals("[]"))
        //    {
        //        foreach (JObject obj in JArray.Parse(timeline))
        //        {
        //            RssNewsContentsFeeds contentFeedsDet = new RssNewsContentsFeeds();
        //            // Domain.Socioboard.Models.Mongo.ContentFeeds contentFeedsDet = new Domain.Socioboard.Models.Mongo.ContentFeeds();
        //            contentFeedsDet.Id = ObjectId.GenerateNewId();

        //            i++;
        //            try
        //            {
        //                contentFeedsDet.Link = JArray.Parse(obj["entities"]["expanded_url"].ToString())[0]["url"].ToString();
        //                //contentFeedsDet = JArray.Parse(obj["entities"]["expanded_url"].ToString())[0]["url"].ToString();
        //            }
        //            catch
        //            {
        //                try
        //                {
        //                    //contentFeedsDet.Link = JArray.Parse(obj["entities"]["urls"].ToString())[0]["expanded_url"].ToString();
        //                    contentFeedsDet.Link = JArray.Parse(obj["entities"]["urls"].ToString())[0]["expanded_url"].ToString();
        //                }
        //                catch (Exception e)
        //                {

        //                }
        //            }
        //            try
        //            {
        //                //contentFeedsDet.Image = JArray.Parse(obj["extended_entities"]["media"].ToString())[0]["media_url"].ToString();
        //                contentFeedsDet.Image = JArray.Parse(obj["extended_entities"]["media"].ToString())[0]["media_url"].ToString();
        //            }
        //            catch
        //            {
        //                try
        //                {
        //                    contentFeedsDet.Image = JArray.Parse(obj["entities"]["media"].ToString())[0]["media_url"].ToString();
        //                }
        //                catch (Exception e)
        //                {

        //                }
        //            }

        //            try
        //            {
        //                contentFeedsDet.Title = obj["text"].ToString();
        //                //contentFeedsDet.Title = obj["text"].ToString();
        //            }
        //            catch (Exception e)
        //            {

        //            }

        //            try
        //            {
        //                string Const_TwitterDateTemplate = "ddd MMM dd HH:mm:ss +ffff yyyy";
        //                contentFeedsDet.PublishingDate = Domain.Socioboard.Helpers.SBHelper.ConvertToUnixTimestamp(DateTime.ParseExact((string)obj["created_at"], Const_TwitterDateTemplate, new System.Globalization.CultureInfo("en-US"))).ToString();
        //                //contentFeedsDet.CreatedDate = Domain.Socioboard.Helpers.SBHelper.ConvertToUnixTimestamp(DateTime.ParseExact((string)obj["created_at"], Const_TwitterDateTemplate, new System.Globalization.CultureInfo("en-US")));
        //            }
        //            catch (Exception e)
        //            {

        //            }
        //            contentFeedsDet.UserId = userId;
        //            contentFeedsDet.keywords = keyword;
        //            // var ret = mongorepo.Find<RssNewsContentsFeeds>(t => t.FeedId == contentFeedsDet.FeedId);

        //            var ret = mongorepo.Find<RssNewsContentsFeeds>(t => t.UserId == userId && t.Image == contentFeedsDet.Image);
        //            var task = Task.Run(async () =>
        //            {
        //                return await ret;
        //            });
        //            int count = task.Result.Count;
        //            if (count < 1)
        //            {
        //                try
        //                {
        //                    //mongorepo.Add<RssNewsContentsFeeds>(contentFeedsDet);ContentFeeds
        //                    mongorepo.Add<RssNewsContentsFeeds>(contentFeedsDet);
        //                }
        //                catch (Exception e) { }

        //            }
        //            else
        //            {
        //                //return "already data present";
        //            }
        //        }
        //        return "data successfully added";
        //    }
        //    output = true;
        //    return output.ToString();
        //}

        public static bool addGplusContentfeedsdata(string keywords, string userId, Helper.AppSettings _appSettings)
        {
            MongoRepository mongorepo = new MongoRepository("RssNewsContentsFeeds", _appSettings);

            bool output = false;

            try
            {
                var discoveryResponse = GplusDiscoverySearchHelper.GooglePlus(keywords, _appSettings.GoogleApiKeyForRssFeed);

                JObject GplusActivities = JObject.Parse(discoveryResponse);

                foreach (JObject obj in JArray.Parse(GplusActivities["items"].ToString()))
                {
                    RssNewsContentsFeeds contentGFeedsDet = new RssNewsContentsFeeds();
                    contentGFeedsDet.Id = ObjectId.GenerateNewId();

                    try
                    {
                        foreach (JObject att in JArray.Parse(obj["object"]["attachments"].ToString()))
                        {
                            contentGFeedsDet.Image = att["fullImage"]["url"].ToString();

                            contentGFeedsDet.Link = att["url"].ToString();

                            contentGFeedsDet.Title = att["displayName"].ToString();
                        }
                    }
                    catch { }
                    try
                    {
                        contentGFeedsDet.PublishingDate = Domain.Socioboard.Helpers.SBHelper.ConvertToUnixTimestamp(DateTime.Parse(obj["published"].ToString())).ToString();
                    }
                    catch { }


                    contentGFeedsDet.UserId   = userId;
                    contentGFeedsDet.keywords = keywords;
                    var ret  = mongorepo.Find <RssNewsContentsFeeds>(t => t.Title == contentGFeedsDet.Title);
                    var task = Task.Run(async() =>
                    {
                        return(await ret);
                    });
                    int count = task.Result.Count;
                    if (count < 1)
                    {
                        try
                        {
                            mongorepo.Add(contentGFeedsDet);
                            output = true;
                        }
                        catch { }
                    }
                }
                return(output);
            }
            catch { }

            return(output);
        }
        public static void addContentfeedsdata(string keyword)
        {
            MongoRepository mongorepo = new MongoRepository("RssNewsContentsFeeds");
            string          timeline  = TwitterHashTag.TwitterBoardHashTagSearch(keyword, null);
            int             i         = 0;

            if (!string.IsNullOrEmpty(timeline) && !timeline.Equals("[]"))
            {
                foreach (JObject obj in JArray.Parse(timeline))
                {
                    RssNewsContentsFeeds contentFeedsDet = new RssNewsContentsFeeds();
                    contentFeedsDet.Id = ObjectId.GenerateNewId();
                    i++;
                    try
                    {
                        contentFeedsDet.Link = JArray.Parse(obj["entities"]["expanded_url"].ToString())[0]["url"].ToString();
                    }
                    catch
                    {
                        try
                        {
                            contentFeedsDet.Link = JArray.Parse(obj["entities"]["urls"].ToString())[0]["expanded_url"].ToString();
                        }
                        catch (Exception e)
                        {
                        }
                    }
                    try
                    {
                        contentFeedsDet.Image = JArray.Parse(obj["extended_entities"]["media"].ToString())[0]["media_url"].ToString();
                    }
                    catch
                    {
                        try
                        {
                            contentFeedsDet.Image = JArray.Parse(obj["entities"]["media"].ToString())[0]["media_url"].ToString();
                        }
                        catch (Exception e)
                        {
                        }
                    }

                    try
                    {
                        contentFeedsDet.Title = obj["text"].ToString();
                    }
                    catch (Exception e)
                    {
                    }

                    try
                    {
                        string Const_TwitterDateTemplate = "ddd MMM dd HH:mm:ss +ffff yyyy";
                        contentFeedsDet.PublishingDate = Domain.Socioboard.Helpers.SBHelper.ConvertToUnixTimestamp(DateTime.ParseExact((string)obj["created_at"], Const_TwitterDateTemplate, new System.Globalization.CultureInfo("en-US"))).ToString();
                    }
                    catch (Exception e)
                    {
                    }
                    contentFeedsDet.keywords = keyword;

                    var ret  = mongorepo.Find <RssNewsContentsFeeds>(t => t.Image == contentFeedsDet.Image);
                    var task = Task.Run(async() =>
                    {
                        return(await ret);
                    });
                    int count = task.Result.Count;
                    if (count < 1)
                    {
                        try
                        {
                            mongorepo.Add <RssNewsContentsFeeds>(contentFeedsDet);
                        }
                        catch (Exception e) { }
                    }
                    else
                    {
                    }
                }
            }
        }
示例#3
0
        /// <summary>
        /// news api implementation
        /// </summary>
        /// <param name="keywords"></param>
        /// <param name="userId"></param>
        /// <param name="logger"></param>
        /// <param name="env"></param>
        /// <param name="appSettings"></param>
        /// <returns></returns>
        public static async Task <IEnumerable <RssNewsContentsFeeds> > FindUrl(string keywords, string userId, ILogger logger, IHostingEnvironment env, Helper.AppSettings appSettings)
        {
            IList <RssNewsContentsFeeds> finalLinkList = new List <RssNewsContentsFeeds>();

            try
            {
                var rssFeedRepository = new MongoRepository("RssNewsContentsFeeds", appSettings);

                List <string> keywordCollections = null;

                if (keywords != null)
                {
                    keywordCollections = keywords.Split(',').ToList();
                }

                var day = 30;

                if (DateTime.UtcNow.Day > 1)
                {
                    day = DateTime.UtcNow.Day - 1;
                }

                var newsApiClient = new NewsApiClient(appSettings.NewsApiKey);

                if (keywordCollections != null)
                {
                    foreach (var keyword in keywordCollections)
                    {
                        var articlesResponse = newsApiClient.GetEverything(new EverythingRequest
                        {
                            Q        = keyword,
                            SortBy   = SortBys.PublishedAt,
                            Language = Languages.EN,
                            From     = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, day)
                        });

                        if (articlesResponse.Articles.Count == 0)
                        {
                            logger.LogError(articlesResponse.Error?.ToString());
                            var temp = await rssFeedRepository.Find <RssNewsContentsFeeds>(x => x.keywords.Contains(keyword));

                            finalLinkList = temp.Skip(temp.Count - 20).Take(20 / keywordCollections.Count).ToList();
                        }
                        else
                        {
                            foreach (var item in articlesResponse.Articles)
                            {
                                var rssFeed = new RssNewsContentsFeeds
                                {
                                    keywords       = keyword,
                                    Link           = item.Url,
                                    Title          = item.Title,
                                    Image          = item.UrlToImage,
                                    PublishingDate = item.PublishedAt?.ToString(System.Globalization.CultureInfo.CurrentCulture)
                                };

                                finalLinkList.Add(rssFeed);
                            }

                            try
                            {
                                await rssFeedRepository.AddList(finalLinkList);
                            }
                            catch (Exception ex)
                            {
                                logger.LogError(ex.StackTrace);
                            }
                        }

                        finalLinkList = finalLinkList.Take(20 / keywordCollections.Count).ToList();
                    }
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex.StackTrace);
            }

            return(finalLinkList.Take(20));
        }