Beispiel #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);
        }
Beispiel #2
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));
        }
Beispiel #3
0
        /// <summary>
        /// 登陆对象向下转换
        /// </summary>
        /// <typeparam name="T">具体登陆平台对象类型</typeparam>
        /// <param name="webLogin">抽象对象</param>
        /// <returns>具体登陆平台对象</returns>
        internal static T GetWeiboLogin <T>(this IWeiboLogin webLogin) where T : class
        {
            T login = webLogin as T;

            if (login == null)
            {
                throw new Exception("登陆对象为空");
            }
            return(login);
        }
Beispiel #4
0
        /// <summary>
        /// CN登陆测试
        /// </summary>
        /// <param name="un"></param>
        /// <param name="pd"></param>
        private static void CNLoginTest(string un, string pd)
        {
            IWeiboLogin service = PlatformType.CN.GetWeiboLogin();

            service.WeiboLogin(un, pd);

            string res = string.Format("Result:{0},Error:{1},Uid:{2},Nickname:{3}", service.Result, service.Error, service.Uid, service.Nickname);

            Console.WriteLine(res);
        }
Beispiel #5
0
        /// <summary>
        /// 根据picPidOrPaths获取pid
        /// </summary>
        /// <param name="picPidOrPaths">picPidOrPaths</param>
        /// <param name="webLogin">当前登陆对象</param>
        /// <param name="joinLetter">多个pid之间的连接符号</param>
        /// <returns>pid1 pid2 pid3</returns>
        /// <exception cref="Exception"></exception>
        public static string GetPicsPid(this string[] picPidOrPaths, IWeiboLogin webLogin, string joinLetter = " ")
        {
            if (picPidOrPaths == null || !picPidOrPaths.Any())
            {
                return("");
            }

            List <string> pids  = new List <string>();
            List <string> paths = new List <string>();

            foreach (string picPidOrPath in picPidOrPaths.Where(c => !string.IsNullOrEmpty(c)))
            {
                //path
                if (picPidOrPath.Contains("."))
                {
                    if (picPidOrPath.Substring(picPidOrPath.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower() != "jpg" &&
                        picPidOrPath.Substring(picPidOrPath.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower() != "png" &&
                        picPidOrPath.Substring(picPidOrPath.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower() != "gif")
                    {
                        throw new Exception(string.Format("图片文件扩展名错误({0})", picPidOrPath));
                    }
                    paths.Add(picPidOrPath);
                }
                //pid
                else
                {
                    pids.Add(picPidOrPath);
                }
            }

            //path转pid
            if (paths.Any())
            {
                pids.AddRange(webLogin.CurrPlatformType.GetHttpWork().AddPicture(webLogin, paths.ToArray()));
            }

            return(string.Join(joinLetter, pids));
        }
Beispiel #6
0
 /// <summary>
 /// 收所有的私信会话
 /// </summary>
 /// <param name="webLogin"></param>
 /// <param name="uid"></param>
 /// <returns></returns>
 public List <CnDirectMessagesEntity> RecevieAllDirectMessages(IWeiboLogin webLogin, string uid)
 {
     ComHttpWorkLogger.Warn("Com 未实现RecevieAllDirectMessages");
     return(new List <CnDirectMessagesEntity>());
 }
Beispiel #7
0
 public string FriendDestroy(IWeiboLogin webLogin, string uid)
 {
     throw new NotImplementedException();
 }
Beispiel #8
0
 /// <summary>
 /// 发私信
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="uid">私信对象</param>
 /// <param name="text">私信内容</param>
 /// <returns>结果 空字符串表示成功</returns>
 public string SendDirectMessages(IWeiboLogin webLogin, string uid, string text)
 {
     ComHttpWorkLogger.Warn("Com 未实现SendDirectMessages");
     return "";
 }
Beispiel #9
0
        /// <summary>
        /// 根据uid获取用户信息
        /// </summary>
        /// <param name="webLogin">登陆对象</param>
        /// <param name="uid"></param>
        /// <returns></returns>
        public CommonEntityLib.Entities.user.Entity GetUserEntity(IWeiboLogin webLogin, string uid)
        {
            IWeiboLogin cnWeiboLogin = PlatformType.CN.GetWeiboLogin();
            cnWeiboLogin.Web.Cookie = webLogin.Web.Cookie;

            if (!CNHttpWork.UserExist(cnWeiboLogin.Web, uid))
            {
                return null;
            }

            CommonEntityLib.Entities.user.Entity res = CNHttpWork.GetUserEntity(cnWeiboLogin.Web, uid);
            if (res == null)
            {
                return null;
            }

            string url = "http://weibo.com/" + uid + "/info";
            string html = webLogin.Web.GetHTML(url);
            if (string.IsNullOrEmpty(html))
            {
                return null;
            }

            var temHtmlList = new Dictionary<string, string>();
            if (html.Contains("<script>FM"))
            {
                var regex = new Regex(@"FM.view\((?<json>.*?)\)</script>");
                if (regex.IsMatch(html))
                {
                    foreach (Match match in regex.Matches(html))
                    {
                        string jsonStr = match.Groups["json"].Value;
                        if (!jsonStr.Contains("等级信息") && !jsonStr.Contains("基本信息") && !jsonStr.Contains("他的主页") && !jsonStr.Contains("Pl_Official_Headerv6__1"))
                        {
                            continue;
                        }

                        var json = DynamicJson.Parse(jsonStr);
                        string domid = json.domid;
                        try
                        {
                            string ht = json.html;
                            for (var i = (char)1; i < (char)32; i++)
                            {
                                ht = ht.Replace(i.ToString(CultureInfo.InvariantCulture), string.Empty);
                            }
                            ht = ht.Replace("\x7F", string.Empty);

                            temHtmlList.Add(domid, ht);
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            }

            foreach (var thl in temHtmlList)
            {
                if (thl.Key.Contains("Pl_Official_Headerv6__1"))
                {
                    res.Verified = thl.Value.Contains("verified.weibo.com");
                    if (res.Verified)
                    {
                        HtmlDocument document = new HtmlDocument();
                        document.LoadHtml(thl.Value);
                        var root = document.DocumentNode;

                        res.VerifiedReason = root.SelectSingleNode("div/div/div[@class='shadow  S_shadow']/div[@class='pf_photo']/a/em")
                                .Attributes["title"].Value;
                    }
                    continue;
                }

                if (thl.Value.Contains("等级信息"))
                {
                    // 等级
                    // <span>Lv.2</span>
                    string lv = Regex.Match(thl.Value, "<span>Lv\\.(?<lv>\\d*)</span>").Groups["lv"].Value;
                    int uRank;
                    if (!string.IsNullOrEmpty(lv) && int.TryParse(lv, out uRank))
                    {
                        res.Urank = uRank;
                    }
                    continue;
                }

                if (thl.Value.Contains("他的主页"))
                {
                    HtmlDocument document = new HtmlDocument();
                    document.LoadHtml(thl.Value);
                    var root = document.DocumentNode;
                    var aTag = root.SelectSingleNode("div/div/table/tr/td/a");
                    if (aTag != null)
                    {
                        res.ProfileUrl = string.Format("http://weibo.com{0}", aTag.Attributes["href"].Value);
                    }
                }

                if (thl.Value.Contains("基本信息"))
                {
                    HtmlDocument document = new HtmlDocument();
                    document.LoadHtml(thl.Value);
                    var root = document.DocumentNode;
                    HtmlNodeCollection categoryNodeList = root.SelectNodes("//ul[@class='clearfix']/li");

                    if (categoryNodeList == null)
                    {
                        continue;
                    }

                    foreach (HtmlNode htmlNode in categoryNodeList)
                    {
                        HtmlNodeCollection spans = htmlNode.SelectNodes("span");
                        if (spans.Count != 2)
                        {
                            continue;
                        }

                        string txt = spans[0].InnerText;
                        string val = spans[1].InnerText;

                        if (txt.Contains("博客"))
                        {
                            res.Url = val;
                            continue;
                        }
                        if (txt.Contains("个性域名"))
                        {
                            res.Domain = val;
                            continue;
                        }
                        if (txt.Contains("注册时间"))
                        {
                            res.CreatedAt = val;
                            continue;
                        }
                        if (txt.Contains("所在地"))
                        {
                            res.Location = val;
                            if (!string.IsNullOrEmpty(res.Location) && res.Location.Split(' ').Count() >= 2)
                            {
                                string provice = res.Location.Split(' ')[0].Trim();
                                string city = res.Location.Split(' ')[1].Trim();
                                res.Province = ProvinceToCode(provice);
                                res.City = CityToCode(city);
                            }
                            continue;
                        }
                        if (txt.Contains("标签"))
                        {
                            HtmlNodeCollection tags = spans[1].SelectNodes("a");
                            if (tags != null)
                            {
                                res.Remark = string.Join(",", tags.Select(c => c.InnerText));
                            }
                        }
                    }
                }
            }
            return res;
        }
Beispiel #10
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);
 }
Beispiel #11
0
 /// <summary>
 /// 批量上传图片到新浪
 /// </summary>
 /// <param name="webLogin">当前登陆对象</param>
 /// <param name="picPaths">图片路径集合</param>
 /// <returns>图片Pid列表</returns>
 public List<string> AddPicture(IWeiboLogin webLogin, params string[] picPaths)
 {
     byte[][] pics = picPaths.Select(File.ReadAllBytes).ToArray();
     return AddPicture(webLogin, pics);
 }
Beispiel #12
0
 public string AttitudesDestroy(IWeiboLogin webLogin, string weiboUrl, string weiboId)
 {
     throw new NotImplementedException();
 }
Beispiel #13
0
 public List <Entity> ReceiveComment(IWeiboLogin webLogin, string uid)
 {
     throw new NotImplementedException();
 }
Beispiel #14
0
 public string SendReplyComment(IWeiboLogin webLogin, string uid, string mid, string cid, string replyName, string replyContent)
 {
     throw new NotImplementedException();
 }
Beispiel #15
0
 public List <CnDirectMessagesEntity> RecevieAllDirectMessages(IWeiboLogin webLogin, string uid)
 {
     throw new NotImplementedException();
 }
Beispiel #16
0
 public string SendDirectMessages(IWeiboLogin webLogin, string uid, string text)
 {
     throw new NotImplementedException();
 }
Beispiel #17
0
 public string SaveInformation(IWeiboLogin webLogin, string targetUid, string uid, string nickname)
 {
     throw new NotImplementedException();
 }
Beispiel #18
0
 /// <summary>
 /// 收发给自己的评论
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="uid"></param>
 /// <returns></returns>
 public List <Entity> ReceiveComment(IWeiboLogin webLogin, string uid)
 {
     ComHttpWorkLogger.Warn("Com 未实现ReceiveComment");
     return(new List <Entity>());
 }
Beispiel #19
0
 /// <summary>
 /// 根据用户uid获取最近10条微博
 /// </summary>
 /// <param name="webLogin"></param>
 /// <param name="uid"></param>
 /// <returns></returns>
 public List <CommonEntityLib.Entities.status.Entity> GetMblogs(IWeiboLogin webLogin, string uid)
 {
     ComHttpWorkLogger.Warn("Com 未实现GetMblogs");
     return(new List <CommonEntityLib.Entities.status.Entity>());
 }
Beispiel #20
0
 public string SaveInformation(IWeiboLogin webLogin, string targetUid, string uid, string nickname)
 {
     throw new NotImplementedException();
 }
Beispiel #21
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);
        }
Beispiel #22
0
 public string SendDirectMessages(IWeiboLogin webLogin, string uid, string text)
 {
     throw new NotImplementedException();
 }
Beispiel #23
0
 /// <summary>
 /// 取消赞
 /// Com未实现这个方法
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="weiboUrl">微博url</param>
 /// <param name="weiboId">微博id</param>
 /// <returns>结果 空字符串表示成功</returns>
 public string AttitudesDestroy(IWeiboLogin webLogin, string weiboUrl, string weiboId)
 {
     ComHttpWorkLogger.Warn("Com 未实现AttitudesDestroy");
     return "";
 }
Beispiel #24
0
 public string SendReplyComment(IWeiboLogin webLogin, string uid, string mid, string cid, string replyName, string replyContent)
 {
     throw new NotImplementedException();
 }
Beispiel #25
0
 /// <summary>
 /// 根据用户uid获取最近10条微博
 /// </summary>
 /// <param name="webLogin"></param>
 /// <param name="uid"></param>
 /// <returns></returns>
 public List<CommonEntityLib.Entities.status.Entity> GetMblogs(IWeiboLogin webLogin, string uid)
 {
     ComHttpWorkLogger.Warn("Com 未实现GetMblogs");
     return new List<CommonEntityLib.Entities.status.Entity>();
 }
Beispiel #26
0
 public bool UserExist(IWeiboLogin webLogin, string uid)
 {
     throw new NotImplementedException();
 }
Beispiel #27
0
 /// <summary>
 /// 收发给自己的私信
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="uid">账号自己的Uid</param>
 /// <returns>私信列表</returns>
 public List<CnDirectMessagesEntity> RecevieDirectMessages(IWeiboLogin webLogin, string uid)
 {
     ComHttpWorkLogger.Warn("Com 未实现RecevieDirectMessages");
     return new List<CnDirectMessagesEntity>();
 }
Beispiel #28
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)
 {
     throw new NotImplementedException();
 }
Beispiel #29
0
 public string UploadAvatar(IWeiboLogin webLogin, string cloneUid)
 {
     throw new NotImplementedException();
 }
Beispiel #30
0
 public List<string> AddPicture(IWeiboLogin webLogin, params string[] picPaths)
 {
     throw new NotImplementedException();
 }
Beispiel #31
0
 /// <summary>
 /// 发私信
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="uid">私信对象</param>
 /// <param name="text">私信内容</param>
 /// <returns>结果 空字符串表示成功</returns>
 public string SendDirectMessages(IWeiboLogin webLogin, string uid, string text)
 {
     ComHttpWorkLogger.Warn("Com 未实现SendDirectMessages");
     return("");
 }
Beispiel #32
0
 public string AttitudesDestroy(IWeiboLogin webLogin, string weiboUrl, string weiboId)
 {
     throw new NotImplementedException();
 }
Beispiel #33
0
 /// <summary>
 /// 发送回复评论
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="uid">工作号自己的Uid(用于记录日志)</param>
 /// <param name="mid">评论的那条微博mid</param>
 /// <param name="cid">被回复的评论cid</param>
 /// <param name="replyName">被回复人的昵称</param>
 /// <param name="replyContent">回复评论内容</param>
 /// <returns>结果 空字符串表示成功</returns>
 public string SendReplyComment(IWeiboLogin webLogin, string uid, string mid, string cid, string replyName, string replyContent)
 {
     ComHttpWorkLogger.Warn("Com 未实现SendReplyComment");
     return("");
 }
Beispiel #34
0
 /// <summary>
 /// 根据uid判断用户是否存在
 /// </summary>
 /// <param name="webLogin"></param>
 /// <param name="uid"></param>
 /// <returns></returns>
 public bool UserExist(IWeiboLogin webLogin, string uid)
 {
     ComHttpWorkLogger.Warn("Com 未实现UserExist");
     return(false);
 }
Beispiel #35
0
        /// <summary>
        /// 根据uid获取用户信息
        /// </summary>
        /// <param name="webLogin">登陆对象</param>
        /// <param name="uid"></param>
        /// <returns></returns>
        public CommonEntityLib.Entities.user.Entity GetUserEntity(IWeiboLogin webLogin, string uid)
        {
            IWeiboLogin cnWeiboLogin = PlatformType.CN.GetWeiboLogin();

            cnWeiboLogin.Web.Cookie = webLogin.Web.Cookie;

            if (!CNHttpWork.UserExist(cnWeiboLogin.Web, uid))
            {
                return(null);
            }

            CommonEntityLib.Entities.user.Entity res = CNHttpWork.GetUserEntity(cnWeiboLogin.Web, uid);
            if (res == null)
            {
                return(null);
            }

            string url  = "http://weibo.com/" + uid + "/info";
            string html = webLogin.Web.GetHTML(url);

            if (string.IsNullOrEmpty(html))
            {
                return(null);
            }

            var temHtmlList = new Dictionary <string, string>();

            if (html.Contains("<script>FM"))
            {
                var regex = new Regex(@"FM.view\((?<json>.*?)\)</script>");
                if (regex.IsMatch(html))
                {
                    foreach (Match match in regex.Matches(html))
                    {
                        string jsonStr = match.Groups["json"].Value;
                        if (!jsonStr.Contains("等级信息") && !jsonStr.Contains("基本信息") && !jsonStr.Contains("他的主页") && !jsonStr.Contains("Pl_Official_Headerv6__1"))
                        {
                            continue;
                        }

                        var    json  = DynamicJson.Parse(jsonStr);
                        string domid = json.domid;
                        try
                        {
                            string ht = json.html;
                            for (var i = (char)1; i < (char)32; i++)
                            {
                                ht = ht.Replace(i.ToString(CultureInfo.InvariantCulture), string.Empty);
                            }
                            ht = ht.Replace("\x7F", string.Empty);

                            temHtmlList.Add(domid, ht);
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            }

            foreach (var thl in temHtmlList)
            {
                if (thl.Key.Contains("Pl_Official_Headerv6__1"))
                {
                    res.Verified = thl.Value.Contains("verified.weibo.com");
                    if (res.Verified)
                    {
                        HtmlDocument document = new HtmlDocument();
                        document.LoadHtml(thl.Value);
                        var root = document.DocumentNode;

                        res.VerifiedReason = root.SelectSingleNode("div/div/div[@class='shadow  S_shadow']/div[@class='pf_photo']/a/em")
                                             .Attributes["title"].Value;
                    }
                    continue;
                }

                if (thl.Value.Contains("等级信息"))
                {
                    // 等级
                    // <span>Lv.2</span>
                    string lv = Regex.Match(thl.Value, "<span>Lv\\.(?<lv>\\d*)</span>").Groups["lv"].Value;
                    int    uRank;
                    if (!string.IsNullOrEmpty(lv) && int.TryParse(lv, out uRank))
                    {
                        res.Urank = uRank;
                    }
                    continue;
                }

                if (thl.Value.Contains("他的主页"))
                {
                    HtmlDocument document = new HtmlDocument();
                    document.LoadHtml(thl.Value);
                    var root = document.DocumentNode;
                    var aTag = root.SelectSingleNode("div/div/table/tr/td/a");
                    if (aTag != null)
                    {
                        res.ProfileUrl = string.Format("http://weibo.com{0}", aTag.Attributes["href"].Value);
                    }
                }

                if (thl.Value.Contains("基本信息"))
                {
                    HtmlDocument document = new HtmlDocument();
                    document.LoadHtml(thl.Value);
                    var root = document.DocumentNode;
                    HtmlNodeCollection categoryNodeList = root.SelectNodes("//ul[@class='clearfix']/li");

                    if (categoryNodeList == null)
                    {
                        continue;
                    }

                    foreach (HtmlNode htmlNode in categoryNodeList)
                    {
                        HtmlNodeCollection spans = htmlNode.SelectNodes("span");
                        if (spans.Count != 2)
                        {
                            continue;
                        }

                        string txt = spans[0].InnerText;
                        string val = spans[1].InnerText;

                        if (txt.Contains("博客"))
                        {
                            res.Url = val;
                            continue;
                        }
                        if (txt.Contains("个性域名"))
                        {
                            res.Domain = val;
                            continue;
                        }
                        if (txt.Contains("注册时间"))
                        {
                            res.CreatedAt = val;
                            continue;
                        }
                        if (txt.Contains("所在地"))
                        {
                            res.Location = val;
                            if (!string.IsNullOrEmpty(res.Location) && res.Location.Split(' ').Count() >= 2)
                            {
                                string provice = res.Location.Split(' ')[0].Trim();
                                string city    = res.Location.Split(' ')[1].Trim();
                                res.Province = ProvinceToCode(provice);
                                res.City     = CityToCode(city);
                            }
                            continue;
                        }
                        if (txt.Contains("标签"))
                        {
                            HtmlNodeCollection tags = spans[1].SelectNodes("a");
                            if (tags != null)
                            {
                                res.Remark = string.Join(",", tags.Select(c => c.InnerText));
                            }
                        }
                    }
                }
            }
            return(res);
        }
Beispiel #36
0
 /// <summary>
 /// 根据m.weibo.cn博文地址获取博文信息
 /// </summary>
 /// <param name="webLogin"></param>
 /// <param name="url"></param>
 /// <returns></returns>
 public CommonEntityLib.Entities.status.Entity GetMblog(IWeiboLogin webLogin, string url)
 {
     ComHttpWorkLogger.Warn("Com 未实现GetMblog");
     return(new CommonEntityLib.Entities.status.Entity());
 }
Beispiel #37
0
 public string DelMblog(IWeiboLogin webLogin, string url, string mid)
 {
     throw new NotImplementedException();
 }
Beispiel #38
0
 public string DelMblog(IWeiboLogin webLogin, string url, string mid)
 {
     throw new NotImplementedException();
 }
Beispiel #39
0
 /// <summary>
 /// 获取新增粉丝的第一页
 /// </summary>
 /// <param name="webLogin"></param>
 public List <string> GetNewFans(IWeiboLogin webLogin)
 {
     ComHttpWorkLogger.Warn("Com 未实现GetNewFans");
     return(new List <string>());
 }
Beispiel #40
0
 public string FriendDestroy(IWeiboLogin webLogin, string uid)
 {
     throw new NotImplementedException();
 }
Beispiel #41
0
 public CommonEntityLib.Entities.status.Entity GetMblog(IWeiboLogin webLogin, string url)
 {
     throw new NotImplementedException();
 }
Beispiel #42
0
 public List<CommonEntityLib.Entities.status.Entity> GetMblogs(IWeiboLogin webLogin, string uid)
 {
     throw new NotImplementedException();
 }
Beispiel #43
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;
        }
Beispiel #44
0
        /// <summary>
        /// 根据picPidOrPaths获取pid
        /// </summary>
        /// <param name="picPidOrPaths">picPidOrPaths</param>
        /// <param name="webLogin">当前登陆对象</param>
        /// <param name="joinLetter">多个pid之间的连接符号</param>
        /// <returns>pid1 pid2 pid3</returns>
        /// <exception cref="Exception"></exception>
        public static string GetPicsPid(this string[] picPidOrPaths, IWeiboLogin webLogin, string joinLetter = " ")
        {
            if (picPidOrPaths == null || !picPidOrPaths.Any())
            {
                return "";
            }

            List<string> pids = new List<string>();
            List<string> paths = new List<string>();
            foreach (string picPidOrPath in picPidOrPaths.Where(c => !string.IsNullOrEmpty(c)))
            {
                //path
                if (picPidOrPath.Contains("."))
                {
                    if (picPidOrPath.Substring(picPidOrPath.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower() != "jpg" &&
                        picPidOrPath.Substring(picPidOrPath.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower() != "png" &&
                        picPidOrPath.Substring(picPidOrPath.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower() != "gif")
                    {
                        throw new Exception(string.Format("图片文件扩展名错误({0})", picPidOrPath));
                    }
                    paths.Add(picPidOrPath);
                }
                //pid
                else
                {
                    pids.Add(picPidOrPath);
                }
            }

            //path转pid
            if (paths.Any())
            {
                pids.AddRange(webLogin.CurrPlatformType.GetHttpWork().AddPicture(webLogin, paths.ToArray()));
            }

            return string.Join(joinLetter, pids);
        }
Beispiel #45
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);
 }
Beispiel #46
0
 /// <summary>
 /// 批量上传图片到新浪
 /// </summary>
 /// <param name="webLogin">当前登陆对象</param>
 /// <param name="picPaths">图片路径集合</param>
 /// <returns>图片Pid列表</returns>
 public List <string> AddPicture(IWeiboLogin webLogin, params string[] picPaths)
 {
     byte[][] pics = picPaths.Select(File.ReadAllBytes).ToArray();
     return(AddPicture(webLogin, pics));
 }
Beispiel #47
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);
 }
Beispiel #48
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));
        }
Beispiel #49
0
 /// <summary>
 /// 根据m.weibo.cn博文地址获取博文信息
 /// </summary>
 /// <param name="webLogin"></param>
 /// <param name="url"></param>
 /// <returns></returns>
 public CommonEntityLib.Entities.status.Entity GetMblog(IWeiboLogin webLogin, string url)
 {
     ComHttpWorkLogger.Warn("Com 未实现GetMblog");
     return new CommonEntityLib.Entities.status.Entity();
 }
Beispiel #50
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));
        }
Beispiel #51
0
 /// <summary>
 /// 获取新增粉丝的第一页
 /// </summary>
 /// <param name="webLogin"></param>
 public List<string> GetNewFans(IWeiboLogin webLogin)
 {
     ComHttpWorkLogger.Warn("Com 未实现GetNewFans");
     return new List<string>();
 }
Beispiel #52
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));
        }
Beispiel #53
0
 /// <summary>
 /// 收发给自己的评论
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="uid"></param>
 /// <returns></returns>
 public List<Entity> ReceiveComment(IWeiboLogin webLogin, string uid)
 {
     ComHttpWorkLogger.Warn("Com 未实现ReceiveComment");
     return new List<Entity>();
 }
Beispiel #54
0
 public string UploadAvatar(IWeiboLogin webLogin, string cloneUid)
 {
     throw new NotImplementedException();
 }
Beispiel #55
0
 /// <summary>
 /// 复制被克隆对象信息
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="targetUid"></param>
 /// <param name="uid">小号的uid</param>
 /// <param name="nickname">小号待更新的昵称</param>
 /// <returns>结果 空字符串表示成功</returns>
 public string SaveInformation(IWeiboLogin webLogin, string targetUid, string uid, string nickname)
 {
     ComHttpWorkLogger.Warn("Com 未实现SaveInformation");
     return "";
 }
Beispiel #56
0
 /// <summary>
 /// 取消赞
 /// Com未实现这个方法
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="weiboUrl">微博url</param>
 /// <param name="weiboId">微博id</param>
 /// <returns>结果 空字符串表示成功</returns>
 public string AttitudesDestroy(IWeiboLogin webLogin, string weiboUrl, string weiboId)
 {
     ComHttpWorkLogger.Warn("Com 未实现AttitudesDestroy");
     return("");
 }
Beispiel #57
0
 /// <summary>
 /// 发送回复评论
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="uid">工作号自己的Uid(用于记录日志)</param>
 /// <param name="mid">评论的那条微博mid</param>
 /// <param name="cid">被回复的评论cid</param>
 /// <param name="replyName">被回复人的昵称</param>
 /// <param name="replyContent">回复评论内容</param>
 /// <returns>结果 空字符串表示成功</returns>
 public string SendReplyComment(IWeiboLogin webLogin, string uid, string mid, string cid, string replyName, string replyContent)
 {
     ComHttpWorkLogger.Warn("Com 未实现SendReplyComment");
     return "";
 }
Beispiel #58
0
 /// <summary>
 /// 复制被克隆对象信息
 /// </summary>
 /// <param name="webLogin">登陆对象</param>
 /// <param name="targetUid"></param>
 /// <param name="uid">小号的uid</param>
 /// <param name="nickname">小号待更新的昵称</param>
 /// <returns>结果 空字符串表示成功</returns>
 public string SaveInformation(IWeiboLogin webLogin, string targetUid, string uid, string nickname)
 {
     ComHttpWorkLogger.Warn("Com 未实现SaveInformation");
     return("");
 }
Beispiel #59
0
 /// <summary>
 /// 根据uid判断用户是否存在
 /// </summary>
 /// <param name="webLogin"></param>
 /// <param name="uid"></param>
 /// <returns></returns>
 public bool UserExist(IWeiboLogin webLogin, string uid)
 {
     ComHttpWorkLogger.Warn("Com 未实现UserExist");
     return false;
 }
Beispiel #60
0
 public List <string> AddPicture(IWeiboLogin webLogin, params string[] picPaths)
 {
     throw new NotImplementedException();
 }