Exemple #1
0
        public async Task <Models.ContentManager.Site> SiteInfo(string id)
        {
            var model = new Models.ContentManager.Site()
            {
                createdateticks = 0,
                title           = string.Empty,
                url             = string.Empty,
                userid          = string.Empty,
                _id             = string.Empty
            };

            try
            {
                var _model = await NoSql.Instance.RunCommandAsync <BsonDocument>("{aggregate:'sites',pipeline:[{$match:{_id:ObjectId('" + id + "')}},{$limit:1}]}");

                if (_model.GetValue("result").AsBsonArray.Any())
                {
                    model = MongoDB.Bson.Serialization.BsonSerializer.Deserialize <Models.ContentManager.Site>(_model.GetValue("result")[0].AsBsonDocument);
                }
            }
            catch (Exception ex)
            {
            }
            return(model);
        }
Exemple #2
0
        public async Task <bool> EditSite(Models.ContentManager.Site model)
        {
            try
            {
                var _id = ObjectId.GenerateNewId().ToString();
                if (!string.IsNullOrWhiteSpace(model._id))
                {
                    _id = model._id;
                }
                var res = await NoSql.Instance.RunCommandAsync <BsonDocument>("{update:'sites',updates:[{q:{_id:ObjectId('" + _id + "')},u:{$set:{_id:ObjectId('" + _id + "'),userid:'" + Rdio.Util.Common.My.id + "',title:'" + model.title + "',createdateticks:" + DateTime.Now.Ticks + ",url:'" + model.url + "'}},upsert:true}]}");

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
        public async Task <List <Models.BaseRssItem> > CrawlerLink(Models.ContentManager.Site model)
        {
            try
            {
                string htmlContent = "";
                var    uri         = new Uri(model.url);
                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0");
                    client.DefaultRequestHeaders.Add("Host", uri.Authority);
                    using (var r = await client.GetAsync(uri))
                    {
                        htmlContent = await r.Content.ReadAsStringAsync();
                    }
                }
                var parser   = new HtmlParser();
                var document = parser.Parse(htmlContent);

                var allLink = document.QuerySelectorAll("a").Where(q => q.Attributes.Where(x => x.Name == "href").Any(x => x.Value.Contains(model.url)) || q.Attributes.Where(x => x.Name == "href").Any(x => x.Value.StartsWith("/")));
                var res     = new List <Models.BaseRssItem>();

                foreach (var item in allLink)
                {
                    string title       = item.TextContent;
                    string link        = new Uri(uri, item.GetAttribute("href")).ToString();
                    string description = "";
                    var    datetime    = DateTime.Now;
                    if (!string.IsNullOrEmpty(title) && title.Length > 1)
                    {
                        res.Add(new Models.BaseRssItem()
                        {
                            title = title, url = link, description = description, dateticks = datetime.Ticks
                        });
                    }
                }
                return(res);
            }
            catch (Exception e)
            {
                return(null);
            }
        }