Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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("发表失败"));
        }
Ejemplo n.º 3
0
        /// <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));
        }
Ejemplo n.º 4
0
 /// <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("发表失败");
 }
Ejemplo n.º 5
0
        /// <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("发表失败"));
        }
Ejemplo n.º 6
0
 /// <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("发表失败");
 }
Ejemplo n.º 7
0
        /// <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));
        }
Ejemplo n.º 8
0
        /// <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));
        }
Ejemplo n.º 9
0
        /// <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));
        }