コード例 #1
0
        /// <summary>
        /// 热点新闻
        /// </summary>
        /// <returns></returns>
        public void GetNews()
        {
            Console.WriteLine("---GetNews---");
            try
            {
                var    web  = new WebClient();
                var    json = web.DownloadString("https://api.jinse.com/v6/information/list?catelogue_key=news&limit=50&information_id=0&flag=down&version=9.9.9");
                JToken data = json.GetJsonValue("list");

                using var scope      = _scopeFactory.CreateScope();
                using var db_context = scope.ServiceProvider.GetRequiredService <CoinDbContext>();

                var source = db_context.CoinArticel.ToList();

                var list = new List <Domain.Coin.CoinArticel.CoinArticel>();

                Parallel.ForEach(data.AsJEnumerable(), item =>
                {
                    var title = GetTitle(item["title"].ToString());

                    if (source.Any(x => x.Title.Equals(title)))
                    {
                        return;
                    }

                    if (list.Any(x => x.Title.Equals(title)))
                    {
                        return;
                    }

                    Console.WriteLine("---GetNews---" + title);

                    var model = new Domain.Coin.CoinArticel.CoinArticel
                    {
                        Id       = Guid.NewGuid().ToString(),
                        Title    = title,
                        Category = 1
                    };

                    GetNewsContnt(item["extra"], model);
                    list.Add(model);
                });

                if (!list.Any())
                {
                    return;
                }
                db_context.CoinArticel.AddRange(list);
                db_context.SaveChanges();
                Console.WriteLine("---GetNews  SaveChanges---");
            }
            catch (Exception ex)
            {
                _logger.LogError(new EventId(ex.HResult), ex, "---GetNews Exception---");
            }
        }
コード例 #2
0
        /// <summary>
        /// 获取新闻具体内容
        /// </summary>
        /// <param name="token"></param>
        /// <param name="model"></param>
        public void GetNewsContnt(JToken token, Domain.Coin.CoinArticel.CoinArticel model)
        {
            try
            {
                var htmlWeb = new HtmlWeb();

                var document = htmlWeb.Load(token["topic_url"].ToString());

                var node = document.DocumentNode.SelectSingleNode("//div[@class='js-article-detail']") ??
                           document.DocumentNode.SelectSingleNode("//div[@class='js-article']");

                if (node != null)
                {
                    foreach (var item in node.ChildNodes)
                    {
                        if (item.InnerText.Contains("文|") || item.InnerText.Contains("编辑|"))
                        {
                            item.InnerHtml = "";
                        }
                    }

                    model.Content = node.InnerHtml;
                }

                model.CreateTime = DateTimeConvert.ConvertDateTime(token["published_at"].ToString());
                var logo = "http://pic.51yuansu.com/pic3/cover/02/61/11/59fc30d0b8598_610.jpg";
                if (!string.IsNullOrWhiteSpace(token["thumbnail_pic"].ToString()))
                {
                    logo = token["thumbnail_pic"].ToString();
                }

                model.Logo   = logo;
                model.Author = token["author"].ToString();
            }
            catch (Exception ex)
            {
                _logger.LogError(new EventId(ex.HResult), ex, "---GetNewsContnt Exception---");
            }
        }
コード例 #3
0
        /// <summary>
        /// 公告频道
        /// </summary>
        public void GetNotice()
        {
            Console.WriteLine("---GetNotice---");
            try
            {
                var    web   = new WebClient();
                var    json  = web.DownloadString("https://api.jinse.com/v4/live/list?limit=50&reading=false&source=web&sort=5&flag=down&id=0");
                JToken data  = json.GetJsonValue("list");
                var    token = new List <JToken>(); // data.First.Last.AsJEnumerable().Values();

                for (var i = 0; i < data.Count(); i++)
                {
                    var temp = data[i].Last.AsJEnumerable().Values().ToList();
                    token.AddRange(temp);
                }

                using var scope      = _scopeFactory.CreateScope();
                using var db_context = scope.ServiceProvider.GetRequiredService <CoinDbContext>();
                var source = db_context.CoinArticel.ToList();

                var list = new List <Domain.Coin.CoinArticel.CoinArticel>();

                Parallel.ForEach(token, item =>
                {
                    var title = GetTitleByContent(item["content"].ToString());

                    Console.WriteLine("---GetNotice---" + title);

                    if (source.Any(x => x.Title.Equals(title)))
                    {
                        return;
                    }

                    if (list.Any(x => x.Title.Equals(title)))
                    {
                        return;
                    }

                    var model = new Domain.Coin.CoinArticel.CoinArticel
                    {
                        Id         = Guid.NewGuid().ToString(),
                        Content    = GetDetail(item["content"].ToString()),
                        CreateTime = DateTimeConvert.ConvertDateTime(item["created_at"].ToString()),
                        Title      = title,
                        Category   = 4,
                        Logo       = ""
                    };
                    list.Add(model);
                });

                if (!list.Any())
                {
                    return;
                }
                db_context.CoinArticel.AddRange(list);
                db_context.SaveChanges();
                Console.WriteLine("---GetNotice  SaveChanges---");
            }
            catch (Exception ex)
            {
                _logger.LogError(new EventId(ex.HResult), ex, "---GetNotice Exception---");
            }
        }