Example #1
0
        /// <summary>
        /// 收发给自己的私信
        /// </summary>
        /// <param name="web"></param>
        /// <param name="uid">账号自己的Uid</param>
        public static List<CnDirectMessagesEntity> RecevieDirectMessages(WebAccessBase web, string uid)
        {
            if (web == null)
                throw new ArgumentNullException("web");
            if (string.IsNullOrEmpty(uid))
                throw new ArgumentNullException("uid");
            List<CnDirectMessagesEntity> result = new List<CnDirectMessagesEntity>();
            web.Encode = Encoding.UTF8;
            web.Reffer = null;
            var home = web.GetHTML("http://m.weibo.cn/");
            if (string.IsNullOrEmpty(home))
            {
                CNHttpWorkLogger.Info("私信{0}访问自己主页为空", uid);
                return null;
            }
            var listStr = web.GetHTML("http://m.weibo.cn/msg/index?format=cards");
            try
            {
                dynamic listDynamic = DynamicJson.Parse(listStr);
                var list = listDynamic[0].card_group;

                foreach (var item in list)
                {
                    if (!item.IsDefined("text")) continue;
                    if (string.IsNullOrEmpty(item.text)) continue;
                    if (!item.IsDefined("unread") || item.unread == "0") continue;

                    var sendUid = item.user.id;

                    CnDirectMessagesEntity cnDirectMessagesEntity = new CnDirectMessagesEntity
                    {
                        Time = CommonExtension.AnalyseTime(item.created_at),
                        Text = item.text,
                        Uid = sendUid,
                        Nickname = item.user.screen_name
                    };
                    if (CheckSendUser(web, sendUid))
                    {
                        result.Add(cnDirectMessagesEntity);
                    }
                }
            }
            catch (Exception ex)
            {
                CNHttpWorkLogger.Error(string.Format("{0}分析私信列表失败\r\n{1}", uid, listStr), ex);
            }

            web.Reffer = new Uri("http://m.weibo.cn/msg/notes");
            var listStr2 = web.GetHTML("http://m.weibo.cn/msg/noteList?page=1");
            try
            {
                dynamic listDynamic = DynamicJson.Parse(listStr2);
                if (listDynamic.ok == "1")
                {
                    var list = listDynamic.data;

                    foreach (var item in list)
                    {
                        CnDirectMessagesEntity cnDirectMessagesEntity = new CnDirectMessagesEntity
                        {
                            Time = CommonExtension.AnalyseTime(item.Value.time),
                            Text = item.Value.text,
                            Uid = item.Value.sender.uid,
                            Nickname = item.Value.sender.name
                        };
                        result.Add(cnDirectMessagesEntity);
                    }
                }
            }
            catch (Exception ex)
            {
                CNHttpWorkLogger.Error(string.Format("{0}分析未关注联系人私信列表失败\r\n{1}", uid, listStr), ex);
            }

            return result.OrderByDescending(p => p.Time).ToList();
        }
Example #2
0
 /// <summary>
 /// 获取指定Uid与当前登录账号的私信会话
 /// </summary>
 /// <param name="web"></param>
 /// <param name="uid"></param>
 /// <returns></returns>
 private static IEnumerable<CnDirectMessagesEntity> GetDialogs(WebAccessBase web, string uid)
 {
     var referer = string.Format("http://m.weibo.cn/msg/chat?uid={0}", uid);
     web.Reffer = new Uri(referer);
     var url = string.Format("http://m.weibo.cn/msg/messages?uid={0}&page=1", uid);
     var html = web.GetHTML(url);
     if (string.IsNullOrEmpty(html))
         return new List<CnDirectMessagesEntity>();
     try
     {
         var result = new List<CnDirectMessagesEntity>();
         dynamic json = DynamicJson.Parse(html);
         if (json.IsDefined("data"))
         {
             foreach (var item in json.data)
             {
                 string text = item.text;
                 text = HtmlRegex.Replace(text, "");
                 CnDirectMessagesEntity cnDirectMessagesEntity = new CnDirectMessagesEntity
                 {
                     Time = CommonExtension.AnalyseTime(item.created_at),
                     Text = text,
                     Uid = item.sender.id,
                     Nickname = item.sender.screen_name
                 };
                 result.Add(cnDirectMessagesEntity);
             }
             return result;
         }
     }
     catch (Exception)
     {
         CNHttpWorkLogger.Info("分析{0}的私信会话列表失败\r\n{1}", uid, html);
     }
     return new List<CnDirectMessagesEntity>();
 }