static void Main( string[] args ) { var id = Guid.NewGuid(); var path = Path.Combine( tempDirectory, id.ToString() ); Directory.CreateDirectory( path ); SmtpClient smtp = new SmtpClient(); smtp.EnableSsl = false; smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; smtp.PickupDirectoryLocation = path; var parser = new JumonyParser(); var document = parser.LoadDocument( "http://blog.sina.com.cn/s/blog_4701280b010183ny.html" ); MailMessage message = CreateMail( document ); smtp.Send( message ); var directory = new DirectoryInfo( path ); var file = directory.GetFiles().Single(); file.MoveTo( Path.Combine( tempDirectory, id.ToString() + ".mht" ) ); directory.Delete( true ); }
/// <summary> /// 加载 bing 的搜索结果 /// </summary> /// <returns></returns> public ActionResult ShowBingResult() { if (!Request.QueryString.AllKeys.Contains("key")) return null; string key = Request.QueryString["key"];//搜索关键字 JumonyParser jumony = new JumonyParser(); //http://cn.bing.com/search?q=AJAX+site%3ablog.haojima.net&first=11&FORM=PERE string pIndex = Request.QueryString.AllKeys.Contains("p") ? Request.QueryString["p"] : ""; int PageIndex = 1; int.TryParse(pIndex, out PageIndex); PageIndex--; //如:blog:JeffreyZhao 博客 var zhankey = key.Split(' ');//先用空格分割 var blogName = string.Empty; if (zhankey.Length >= 2) { var str = zhankey[0].Trim(); if (str.Length > 6 && str.Substring(0, 5) == "blog:") blogName = "/" + str.Substring(5);//这里取得 用户名 } if (!string.IsNullOrEmpty(blogName)) key = key.Substring(key.IndexOf(' ')); //如: var url = "http://cn.bing.com/search?q=" + key + "+site:" + GetSiteUrl() + blogName + "&first=" + PageIndex + "1&FORM=PERE"; var document = jumony.LoadDocument(url); var list = document.Find("#b_results .b_algo").ToList().Select(t => t.ToString()).ToList(); var listli = document.Find("li.b_pag nav ul li"); if (PageIndex > 0 && listli.Count() == 0) return null; if (listli.Count() > 1) { var text = document.Find("li.b_pag nav ul li").Last().InnerText(); int npage = -1; if (text == "下一页") { if (listli.Count() > 1) { var num = listli.ToList()[listli.Count() - 2].InnerText(); int.TryParse(num, out npage); } } else int.TryParse(text, out npage); if (npage <= PageIndex) list = null; } return PartialView(list); }
/// <summary> /// 迁移cnblog评论 /// </summary> /// <param name="BlogsId">嗨博客 博客id</param> /// <param name="BlogUsersId">嗨博客 评论博客用户id(因为迁移评论者 没有id 所以都默认为1)</param> /// <param name="postId">cnblog 博客id</param>int BlogUsersId = 1, /// <param name="blogApp">cnblog 博客用户名</param> public string testJumonyParser(int BlogsId = 1, string postId = "4368417", string blogApp = "zhaopei") { bool isNext = true; int i = 0; var BlogUsersId = 1; BLL.BlogUsersSetBLL userbll = new BlogUsersSetBLL(); var usertemp = GetDataHelper.GetAllUser().Where(t => t.UserName == " ").FirstOrDefault(); if (null == usertemp) { var user = new Blogs.ModelDB.BlogUsersSet() { UserName = "******", UserPass = "******", IsDel = false, IsLock = false, UserMail = "无效", CreateTime = DateTime.Now, UserInfo = new ModelDB.UserInfo() }; userbll.Add(user); userbll.save(false); BlogUsersId = user.Id; } else BlogUsersId = usertemp.Id; //List<BlogCommentSet> blogcommen = new List<BlogCommentSet>(); BlogCommentSetBLL blogcommenbll = new BlogCommentSetBLL(); while (isNext) { i++; var url = "http://www.cnblogs.com/mvc/blog/GetComments.aspx?postId=" + postId + "&blogApp=" + blogApp + "&pageIndex=" + i; var jumony = new JumonyParser(); var htmlSource = jumony.LoadDocument(url).InnerHtml(); JavaScriptSerializer _jsSerializer = new JavaScriptSerializer(); CnBlogComments comm = _jsSerializer.Deserialize<CnBlogComments>(htmlSource); var commentsHtml = jumony.Parse(comm.commentsHtml); var pager = commentsHtml.Find("div.pager").FirstOrDefault(); if (null != pager) { var Next = pager.Find("*").LastOrDefault().InnerText(); if (Next != "Next >") isNext = false; } else isNext = false; var listComment = commentsHtml.Find("div.feedbackItem").ToList(); foreach (var item in listComment) { var commentDataNode = item.Find("div.feedbackListSubtitle span.comment_date").FirstOrDefault(); // var commentData = DateTime.Parse(commentDataNode.InnerText()); var commentUserNode = item.Find("div.feedbackListSubtitle a[target='_blank']").FirstOrDefault(); var commentUser = commentUserNode.InnerText(); var Content = item.Find("div.blog_comment_body").FirstOrDefault().InnerText(); blogcommenbll.Add( new BlogCommentSet() { BlogsId = BlogsId, CommentID = -1, IsDel = false, Content = Content, CreateTime = commentData, ReplyUserName = commentUser, BlogUsersId = BlogUsersId, IsInitial = true } ); } } try { blogcommenbll.save(false); } catch (Exception) { } return "ok"; }
static string siteUrl = string.Empty; // "blog.haojima.net"; #endregion Fields #region Methods /// <summary> /// 转发 /// </summary> public void Forward() { Response.ContentType = "application/json"; var ResultValue = string.Empty; var data = Request.QueryString["mydata"]; string callback = Request.QueryString["callback"]; JavaScriptSerializer jss = new JavaScriptSerializer(); Dictionary<string, string> dic = jss.Deserialize<Dictionary<string, string>>(data); var name = dic["username"].Trim(); var pass = dic["password"].Trim(); var userinfo = CacheData.GetAllUserInfo().Where(t => t.UserName == name && t.UserPass == pass.MD5().MD5()).FirstOrDefault(); object tyeList = null; if (userinfo != null) { var tag = dic["tag"].Trim(); var type = dic["type"].Trim(); var url = dic["url"].Trim(); int typeint = -1; int.TryParse(type, out typeint); var tags = tag.Split(','); var jp = new JumonyParser(); var html = jp.LoadDocument(url); var titlehtml = html.Find(".postTitle a").FirstOrDefault().InnerHtml(); titlehtml = "【转】" + titlehtml; var bodyhtml = html.Find("#cnblogs_post_body").FirstOrDefault().InnerHtml(); bodyhtml += "</br><div class='div_zf'>==================================<a href='" + url + "' target='_blank'>原文链接</a>==================================</div>"; var mtag = BLL.Common.GetDataHelper.GetAllTag().Where(t => tags.Contains(t.TagName)).ToList(); var blogtagid = new List<int>(); for (int i = 0; i < tags.Length; i++) { blogtagid.Add(this.GetTagId(tags[i], userinfo.Id)); } //&& t.UsersId == userinfo.Id 理论是不用 加用户id 筛选 var myBlogTags = new BlogTagsBLL().GetList(t => blogtagid.Contains(t.Id), isAsNoTracking: false).ToList(); var myBlogTypes = new BLL.BlogTypesBLL().GetList(t => t.Id == typeint, isAsNoTracking: false).ToList(); object obj = null; string call = string.Empty; BLL.BlogsBLL blogbll = new BLL.BlogsBLL(); var blogtitle = blogbll.GetList(t => t.UsersId == userinfo.Id).OrderByDescending(t => t.Id).FirstOrDefault().BlogTitle; if (blogtitle == titlehtml) { obj = new { s = "no", m = "已存在相同标题博客文章~", u = GetSiteUrl() }; call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } var blogmode = new Blogs.ModelDB.Blogs() { UsersId = userinfo.Id, BlogTitle = titlehtml, BlogTypes = myBlogTypes, BlogTags = myBlogTags, BlogContent = bodyhtml, CreateTime = DateTime.Now, BlogCreateTime = DateTime.Now, BlogUpTime = DateTime.Now, IsShowMyHome = true }; blogbll.Add(blogmode); if (blogbll.save() > 0) { obj = new { s = "ok", m = "发布成功", u = GetSiteUrl() + "/" + userinfo.UserName + "/" + blogmode.Id + ".html" }; call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } obj = new { s = "no", m = "发布失败", u = GetSiteUrl() + "/" + userinfo.UserName + "/" + blogmode.Id + ".html" }; call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } else { var obj = new { s = "no", m = "发布失败", u = GetSiteUrl() + "/" }; var call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } //var cc = callback + "('ok')"; //Response.ContentType = "application/json"; //Response.Write(cc); }