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); }
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); } }