/// <summary> /// 批量上传图片到新浪 /// </summary> /// <param name="webLogin">当前登陆对象</param> /// <param name="picContents">图片Byte[]集合</param> /// <returns>图片Pid列表</returns> public List <string> AddPicture(IWeiboLogin webLogin, params byte[][] picContents) { ComWeiboLogin login = webLogin.GetWeiboLogin <ComWeiboLogin>(); login.Web.Encode = Encoding.UTF8; string html = login.Web.GetHTML("http://weibo.com/"); if (string.IsNullOrEmpty(html)) { ComHttpWorkLogger.Info(string.Format("上传图片失败\r\n")); throw new Exception("上传图片失败 http://weibo.com/ 返回空"); } var onick = onickReg.Match(html).Groups["onick"].Value; var oid = oidReg.Match(html).Groups["oid"].Value; List <string> res = new List <string>(); foreach (var pic in picContents) { var pichtml = login.Web.UploadImage(pic, string.Format("http://picupload.service.weibo.com/interface/pic_upload.php?app=miniblog&data=1&url=weibo.com/u/{0}&markpos=1&logo=1&nick={1}&marks=1&mime=image/jpeg&ct={2}", onick, oid, new Random(Guid.NewGuid().GetHashCode()).NextDouble())) ?? ""; if (string.IsNullOrEmpty(pichtml)) { ComHttpWorkLogger.Info("图片pid获取失败\r\n{0}图片长度:\r\n{1}", pichtml, pic.Length); } else { res.Add(pidReg.Match(pichtml).Groups["pid"].Value); } } return(res); }
/// <summary> /// 发布文字信息与多张图片内容 /// </summary> /// <param name="login">登录信息</param> /// <param name="picPaths">图片路径数组</param> /// <param name="msg">需要发布的文本内容</param> /// <returns></returns> public static string SendMsg(ComWeiboLogin login, string[] picPaths, string msg) { if (Encoding.GetEncoding("GBK").GetByteCount(msg) * 2 > 280) { throw new Exception("文本内容超出280字节"); } if (picPaths.Length > 9) { throw new Exception("图片超出9张"); } login.Web.Encode = Encoding.UTF8; string html = login.Web.GetHTML("http://weibo.com/"); if (string.IsNullOrEmpty(html)) { ComHttpWorkLogger.Info(string.Format("微博发表失败\r\n")); return(string.Format("发表失败")); } var onick = onickReg.Match(html).Groups["onick"].Value; var oid = oidReg.Match(html).Groups["oid"].Value; var pid = string.Empty; for (int i = 0; i < picPaths.Length; i++) { string picPath = picPaths[i]; if (picPath.Substring(picPath.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower() != "jpg" && picPath.Substring(picPath.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower() != "png") { throw new Exception(string.Format("图片文件扩展名错误({0})", picPath)); } var pic = File.ReadAllBytes(picPath); var pichtml = login.Web.UploadImage(pic, string.Format("http://picupload.service.weibo.com/interface/pic_upload.php?app=miniblog&data=1&url=weibo.com/u/{0}&markpos=1&logo=1&nick={1}&marks=1&mime=image/jpeg&ct={2}", onick, oid, new Random(Guid.NewGuid().GetHashCode()).NextDouble())) ?? ""; if (string.IsNullOrEmpty(pichtml)) { ComHttpWorkLogger.Info("图片pid获取失败\r\n{0}图片路径:\r\n{1}", pichtml, picPath); } else { if (i < 1) { pid += pidReg.Match(pichtml).Groups["pid"].Value; } else { pid += " " + pidReg.Match(pichtml).Groups["pid"].Value; } } } var url = string.Format("http://weibo.com/aj/mblog/add?ajwvr=6&__rnd={0}", CommonExtension.GetTime()); var postData = string.Format("location=v6_content_home&appkey=&style_type=1&pic_id={0}&text={1}&pdetail=&rank=0&rankid=&module=stissue&pub_type=dialog&_t=0", pid, msg); var htmlMsg = login.Web.Post(url, postData); if (!string.IsNullOrEmpty(htmlMsg) && htmlMsg.Contains("\"code\":\"100000\"")) { return(""); } ComHttpWorkLogger.Info(string.Format("微博发表失败\r\n{0}", htmlMsg)); return(string.Format("发表失败")); }
/// <summary> /// 发微博 /// </summary> /// <param name="webLogin">登陆对象</param> /// <param name="text">微博内容 不能超过140字</param> /// <param name="appkey">appkey 可以为null</param> /// <param name="picPidOrPaths">图片Pid集合、路径集合</param> /// <returns>结果 空字符串表示成功</returns> public string AddMblog(IWeiboLogin webLogin, string text, string appkey, params string[] picPidOrPaths) { text.CheckLength(280); ComWeiboLogin login = webLogin.GetWeiboLogin <ComWeiboLogin>(); string picsPid = picPidOrPaths.GetPicsPid(webLogin); return(AddMblog(login, text, picsPid)); }
/// <summary> /// 发布文字信息与多张图片内容 /// </summary> /// <param name="login">登录信息</param> /// <param name="msg">信息内容</param> /// <param name="picPids">图片pid数组</param> /// <returns></returns> public static string AddMblog(ComWeiboLogin login, string msg, string picPids) { if (Encoding.GetEncoding("GBK").GetByteCount(msg) * 2 > 280) { throw new Exception("文本内容超出280字节"); } if (picPids.Split(' ').Count() > 9) { throw new Exception("图片超出9张"); } login.Web.Reffer = new Uri("http://weibo.com/"); login.Web.Encode = Encoding.UTF8; var url = string.Format("http://weibo.com/aj/mblog/add?ajwvr=6&__rnd={0}", CommonExtension.GetTime()); var postData = string.Format("location=v6_content_home&appkey=&style_type=1&pic_id={0}&text={1}&pdetail=&rank=0&rankid=&module=stissue&pub_type=dialog&_t=0", picPids, msg); var htmlMsg = login.Web.Post(url, postData); if (!string.IsNullOrEmpty(htmlMsg) && htmlMsg.Contains("\"code\":\"100000\"")) { return ""; } ComHttpWorkLogger.Info(string.Format("微博发表失败\r\n{0}", htmlMsg)); return string.Format("发表失败"); }
/// <summary> /// 发布文字信息与多张图片内容 /// </summary> /// <param name="login">登录信息</param> /// <param name="msg">信息内容</param> /// <param name="picPids">图片pid数组</param> /// <returns></returns> public static string AddMblog(ComWeiboLogin login, string msg, string picPids) { if (Encoding.GetEncoding("GBK").GetByteCount(msg) * 2 > 280) { throw new Exception("文本内容超出280字节"); } if (picPids.Split(' ').Count() > 9) { throw new Exception("图片超出9张"); } login.Web.Reffer = new Uri("http://weibo.com/"); login.Web.Encode = Encoding.UTF8; var url = string.Format("http://weibo.com/aj/mblog/add?ajwvr=6&__rnd={0}", CommonExtension.GetTime()); var postData = string.Format("location=v6_content_home&appkey=&style_type=1&pic_id={0}&text={1}&pdetail=&rank=0&rankid=&module=stissue&pub_type=dialog&_t=0", picPids, msg); var htmlMsg = login.Web.Post(url, postData); if (!string.IsNullOrEmpty(htmlMsg) && htmlMsg.Contains("\"code\":\"100000\"")) { return(""); } ComHttpWorkLogger.Info(string.Format("微博发表失败\r\n{0}", htmlMsg)); return(string.Format("发表失败")); }
/// <summary> /// 发布文字信息与单张图片内容 /// </summary> /// <param name="login">登录信息</param> /// <param name="picPath">图片路径</param> /// <param name="msg">需要发布的文本内容</param> /// <returns></returns> public static string SendMsg(ComWeiboLogin login, string picPath, string msg) { if (Encoding.GetEncoding("GBK").GetByteCount(msg) * 2 > 280) { throw new Exception("文本内容超出280字节"); } login.Web.Encode = Encoding.UTF8; string html = login.Web.GetHTML("http://weibo.com/"); if (string.IsNullOrEmpty(html)) { ComHttpWorkLogger.Info(string.Format("微博发表失败\r\n")); return string.Format("发表失败"); } if (picPath.Substring(picPath.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower() != "jpg" && picPath.Substring(picPath.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower() != "png") { throw new Exception(string.Format("图片文件扩展名错误({0})", picPath)); } var onick = onickReg.Match(html).Groups["onick"].Value; var oid = oidReg.Match(html).Groups["oid"].Value; var pic = File.ReadAllBytes(picPath); var pichtml = login.Web.UploadImage(pic, string.Format("http://picupload.service.weibo.com/interface/pic_upload.php?app=miniblog&data=1&url=weibo.com/u/{0}&markpos=1&logo=1&nick={1}&marks=1&mime=image/jpeg&ct={2}", onick, oid, new Random(Guid.NewGuid().GetHashCode()).NextDouble())) ?? ""; if (string.IsNullOrEmpty(pichtml)) { ComHttpWorkLogger.Info("图片pid获取失败\r\n{0}图片路径:\r\n{1}", pichtml, picPath); } var pid = pidReg.Match(pichtml).Groups["pid"].Value; var url = string.Format("http://weibo.com/aj/mblog/add?ajwvr=6&__rnd={0}", CommonExtension.GetTime()); var postData = string.Format("location=v6_content_home&appkey=&style_type=1&pic_id={0}&text={1}&pdetail=&rank=0&rankid=&module=stissue&pub_type=dialog&_t=0", pid, msg); var htmlMsg = login.Web.Post(url, postData); if (!string.IsNullOrEmpty(htmlMsg) && htmlMsg.Contains("\"code\":\"100000\"")) { return ""; } ComHttpWorkLogger.Info(string.Format("微博发表失败\r\n{0}", htmlMsg)); return string.Format("发表失败"); }
/// <summary> /// 删除微博 /// </summary> /// <param name="webLogin">登陆对象</param> /// <param name="url"></param> /// <param name="mid"></param> /// <returns></returns> public string DelMblog(IWeiboLogin webLogin, string url, string mid) { ComWeiboLogin login = webLogin.GetWeiboLogin <ComWeiboLogin>(); return(DelMblog(login.Web, url, mid)); }
/// <summary> /// 点赞 /// </summary> /// <param name="webLogin">登陆对象</param> /// <param name="weiboUrl">微博url</param> /// <param name="weiboId">微博id</param> /// <returns>结果 空字符串表示成功</returns> public string AttitudesCreate(IWeiboLogin webLogin, string weiboUrl, string weiboId) { ComWeiboLogin login = webLogin.GetWeiboLogin <ComWeiboLogin>(); return(AttitudesCreate(login.Web, weiboUrl, weiboId)); }
/// <summary> /// 取消关注 /// </summary> /// <param name="webLogin">登陆对象</param> /// <param name="uid">取消关注用户uid</param> /// <returns>结果 空字符串表示成功</returns> public string FriendDestroy(IWeiboLogin webLogin, string uid) { ComWeiboLogin login = webLogin.GetWeiboLogin <ComWeiboLogin>(); return(FriendDestroy(login.Web, uid)); }